次のように書くための、より審美的で読みやすい方法があるかどうか疑問に思っていました。
for (int i = 0; i < 100; i++)
{
// If m.GetString(i) throws an exception, continue.
// Otherwise, do stuff.
try
{
string s = m.GetString(i);
continue;
}
catch (InvalidCastException)
{
}
// do stuff with the message that you know is not a string.
}
m は次のようになります。
msg[0] = 10
msg[1] = "string"
msg[2] = 2.224574743
// Etc.
// Assume it's different every time.
したがって、この例で行うと、 aではなく a であるm.GetString(0)
ため、例外がスローされます。GetType が含まれておらず、m を編集できないため、これを使用して型を取得します。msg[0]
uint
string
m
m は、Message
編集できないライブラリ内のクラスのインスタンスです。
ただし、これがうまく機能しているにもかかわらず、型を取得するために、たとえそれが a であっても、意図的に例外を作成するのは非効率的です (そして確かに読みやすくはありません) try-catch
。
より良い方法はありますか、それとも私はこれにこだわっていますか?
編集:Message
わかりました、私はクラスをもう少し調査しました(最初に行うべきでした、申し訳ありません)。それはIEnumerable<object>