新しいオブジェクトFoo
が作成されると、コンストラクタはオブジェクトプロパティに基づいて新しいフォルダと新しいファイルを作成することになっています。しかし、私はNullException (param: path2)
を得ますか?コンストラクタでプロパティ値を持つ新しいオブジェクトを作成します。Null
コンストラクタが呼び出されたときに、オブジェクトプロパティの値がNullであることがわかりました。しかし、私はオブジェクトを作成したときにプロパティ値を与えましたか?私は何が欠けていますか?
私のFooクラス:私のメインクラスで
public class Foo
{
public string Bar { get; set; }
public string Baz { get; set; }
public string Source { get { return Path.Combine(Qux, Baz, Bar); } }
private string Qux { get { return Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); } }
public Foo()
{
// Use property values to find or create Directory and File
if (!Directory.Exists(Path.Combine(Qux, Baz))) Directory.CreateDirectory(Path.Combine(Qux, Baz));
if (!File.Exists(Source)) File.Create(Source);
}
}
:
// Create a new Foo object with following property values
Foo foo = new Foo { Baz = "corge", Bar = "grault" };
[NullReferenceExceptionとは何ですか?それを修正するにはどうすればいいですか?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix -it) – Dmitry
この構文では、コンストラクターはプロパティが割り当てられる前に*実行されます。あなたがコンストラクタのボディでそれらを使用しているので、あなたは不運です。たぶんそれらの代わりにコンストラクタ引数を作るでしょうか? –
可能な複製http://stackoverflow.com/questions/17327266/constructor-vs-object-initializer-precedence-in-c-sharp - コンストラクタとオブジェクト初期化子の優先順位はC# – KMoussa