【发布时间】:2017-03-28 07:18:00
【问题描述】:
当类Foo 的新对象被创建时,构造函数应该根据对象属性创建一个新文件夹和一个新文件。但我得到NullException (param: path2)?
我发现在调用构造函数时,对象属性的值为 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" };
【问题讨论】:
-
使用该语法,构造函数运行之前属性被分配到。由于您在构造函数的主体中使用它们,因此您不走运。也许让它们改为构造函数参数?
-
stackoverflow.com/questions/17327266/… 的可能重复项 - C# 中的构造函数与对象初始化程序优先级
标签: c# object constructor properties