C# 功能及;对象初始值设定项中的属性用法
C#的规范是否阻止从对象(或结构)的初始值设定项构造中调用方法 我问这个问题的原因是因为我试图使用LINQtoXML语句在初始值设定项中使用gater数据。这是行不通的。但是,如果我事先将数据保存到局部变量中,它就可以正常工作。我只是想知道为什么会发生这种情况,因为我已经找出了代码中的错误 不起作用:C# 功能及;对象初始值设定项中的属性用法,c#,struct,object-initializers,C#,Struct,Object Initializers,C#的规范是否阻止从对象(或结构)的初始值设定项构造中调用方法 我问这个问题的原因是因为我试图使用LINQtoXML语句在初始值设定项中使用gater数据。这是行不通的。但是,如果我事先将数据保存到局部变量中,它就可以正常工作。我只是想知道为什么会发生这种情况,因为我已经找出了代码中的错误 不起作用: SavedData sData = new SavedData() { exportLocation = data.Root.Descendants("ExportLocation
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
};
您可以在初始值设定项中调用方法,因此这里还发生了其他事情 以下对我来说很好:
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构造函数正在执行的使数据无效的操作。什么是不工作?它对我来说很好,应该能用。如果您告诉我们它是如何工作的,我们可能会有所帮助。@MarcinJuraszek在这种情况下不工作并不意味着它不能编译。对象未初始化且等于null。您是正确的。原来我的XML文件有一个问题,因为它没有正确解析
ExportType
enum值,而没有包装为enum.Parse(typeof(ExportType),[LINQ-to-XML HERE])
感谢您为我指明了正确的方向。