通常、クラスのコレクションプロパティを初期化するのを忘れてnull参照エラーが発生しました。 construtorを使わずに自動的に行う方法はありますか?クラスで宣言したときにコレクションプロパティを初期化できますか?
1
A
答えて
4
private List<string> _names = new List<string>();
public List<string> Names
{
get {return _names;}
set {_names = value;}
}
あなたが直接
public List<string> Names { get; set; }
を使用したい場合は、私は、コンストラクタを使用すること以外は考えています。
1
一つの方法:
List<string> myList = new List<string>();
1
public class Foo {
List<int> list = new List<int>();
// details elided
}
今すぐlist
がnull
あなたのインスタンスメソッドのいずれかを実行していることはありません。
1
彼はコンストラクタなしで尋ねられているので、私は答えがノーだと思います - 私は彼がおそらくあなたが(不正確に)スタックで宣言されたC++クラスを知覚する方法を探しているとイメージしています - スタック上にポインタを持たない言語に対して構文的に見ても、コンストラクタが呼び出されていないという錯覚が与えられます。
私は依存性注入が初めてであるため、不確実ですが、おそらく何かがそのように行われ、効果的にすべてのコレクションを自動配線しますか?
編集:本当に - なぜですか?ヌルなどを宣言するいくつかの単体テストを書いてください。メンバー変数を作成するのを忘れると、「私にとって必要なものだけで、私が望むやり方で」トーテム
1
リスト構築を邪魔する微妙なバリエーション - WCFを含むいくつかのシナリオで役立ちますこれは、逆シリアル化のコールバックを必要とせずに)コンストラクタとフィールド初期化子の両方をスキップ:
public class MyType
{
private List<string> items;
public List<string> Items { get {
return items ?? (items = new List<string>()); } }
}
関連する問題
- 1. 宣言でクラスメンバーを初期化できないのはなぜですか?
- 2. クラスorg.eclipse.persistence.jaxb.BeanValidationHelperを初期化できませんでした
- 3. org.apache.drill.exec.server.Drillbitクラスを初期化できませんでした。
- 4. ColdFusionエラー:クラスjava.awt.Colorを初期化できませんでした
- 5. java.lang.NoClassDefFoundError:クラスorg.springframework.web.util.NestedServletExceptionを初期化できませんでした。
- 6. java.lang.NoClassDefFoundError:クラスjavax.swing.UIManagerを初期化できませんでした
- 7. クラスの初期化リストでラムダを使用できますか?
- 8. 「NoClassDefFoundErrorが:クラス初期化できませんでした」というエラーを
- 9. forループの初期化でさまざまな型の変数を宣言できますか?
- 10. 変数を再初期化するか、新規に宣言しますか?
- 11. 独自のinitWithFrameでクラスを初期化することはできますか?
- 12. コンストラクタまたはフィールド宣言のリストの初期化
- 13. 属しているstate_machinedクラスを初期化できません
- 14. Flashは別のクラスの宣言セクションからクラスをインスタンス化できません。
- 15. なぜPTHREAD_COND_INITIALIZERを使用して、条件変数が宣言されたときにのみ初期化することができますか?
- 16. クラスで宣言されているインスタンスをグローバル化できますか?
- 17. なぜ構造体のベクトルメンバーを宣言して初期化できないのですか?
- 18. Android Studio 2.0 Gradleエラー[NoClassDefFoundError:クラスorg.gradle.StartParameterを初期化できませんでした]
- 19. IKVM:JAXP 1.3 DatatypeFactoryクラスを初期化できませんでした。IKVM.OpenJDK.XML.Bind error
- 20. GroovyConsole ActiveMQエラー:NoClassDefFoundError:クラスorg.apache.activemq.ActiveMQPrefetchPolicyを初期化できませんでした。
- 21. Tomcat 7 - java.lang.NoClassDefFoundError:クラスjavax.servlet.http.Cookieを初期化できませんでした
- 22. C言語のビットフィールドをグローバルとして初期化できません
- 23. はfstreamオブジェクトを宣言できませんか?それをポインタとして宣言できますか?
- 24. C:宣言後に構造体変数を初期化する
- 25. リスト初期化でstd :: vectorを初期化できない
- 26. 「クラスcom.ibm.icu.impl.JavaTimeZoneを初期化できませんでした」とはどういう意味ですか?
- 27. Cでの静的変数宣言/初期化の理解
- 28. クラスnet.sf.cglib.proxy.Enhancerを初期化できません
- 29. MKAnnotationクラスのCLLocationCoordinate2D iVarを初期化できません
- 30. クラスcom.google.gdata.client.youtube.YouTubeServiceを初期化できません
私はOPが、これはコンパイラによって自動的に行わたかったと思います。 –
@ icyrock.com、ありがとう、私はそれを知っている、そして私が示しているようにコンパイラはこれをしません。 – Gabe