C#规范是否阻止在对象(或结构体)初始化器构造中调用方法?
我问的原因是因为我试图使用LINQ-to-XML语句在初始化程序中使用gater数据。这不起作用。但是,如果我将手数保存到局部变量之前得到数据,它可以正常工作。我只是想知道为什么会发生这种情况,因为我已经在我的代码中找出了错误。
不起作用:
SavedData sData = new SavedData()
{
exportLocation = data.Root.Descendants("ExportLocation").FirstOrDefault().Value,
exportType = (ExportType)data.Root.Descendants("ExportType").FirstOrDefault().Value
};
使用:
var exLoc = data.Root.Descendants("ExportLocation").FirstOrDefault().Value;
ExportType type = (ExportType)data.Root.Descendants("ExportType").FirstOrDefault().Value;
Saved Data sData = new SavedData()
{
exportLocation = exLoc,
exportType = type
};
答案 0 :(得分:1)
您可以在初始化程序中调用方法,因此此处还有其他内容。
以下对我来说很好:
class A
{
public int x { get; set; }
}
class B
{
public int foo()
{
return 3;
}
}
class Program
{
static void Main(string[] args)
{
B data = new B();
A a = new A() {
x = data.foo()
};
}
}
a.x设置为3,因此工作正常。
当您重写时,您的代码可能是另一个问题。它也可能是SavedData构造函数正在做的事情,它使数据无效。