2
私はVB.netで働いていて、ジェネリックToStringを作成したいと思います。 には、 "私の中の" For Eachを行う方法があります。私の各プライベート変数のためのvb.net
サンプル
Public Property Var1() As String {... get ... set ...}
Public Property Var2() As String {... get ... set ...}
Public Property Var2() As String {... get ... set ...}
Public Overrides Function ToString() As String
dim str as stringbuilder
for each item in Me
str.append(item.tostring())
next
return str
End Function
私の質問の理由その私の変数のいくつかは、ヌル(何)になることはできませんので。 だから、このような一般的なと、私は
if item isnot nothing then
str.append(item.tostring())
end if
を行うことができます多分もっと良い方法をtheresの?
これはGetFields
でリフレクションを使用して達成することができます
を使い表示したい場合は、しかし、あなたはやるべきではない:ここに行きます! 'ToString'は可能な限り速くなければならず、それは逆になります。 –
なぜ、反射を使って 'ToString()'を書くのですか?あなたはあなたの特性が何であるかを知っています。彼らの意味を知っていて、それらを使うだけです。クラスに大きな値を持つ多くのプロパティがある場合、本当にすべての情報を表示するToString()が必要ですか?あなたの 'ToString'オーバーライドはあなたのクラスに特有である必要があります。 – Jodrell
ええ、そういうことですが、私はすべてのtoString(またはPrintElements()のような関数)に貼り付けることができるコードブロックの作成を考えていました。そのため、すべてのローカル変数を書き換える必要はありません。なぜなら、時にはクラスに多くの変数があるためです。それは速くて、必要ならばnothing.toString()のようなエラーをキャッチすることができます。 – forX