C# 功能及;对象初始值设定项中的属性用法

C# 功能及;对象初始值设定项中的属性用法,c#,struct,object-initializers,C#,Struct,Object Initializers,C#的规范是否阻止从对象(或结构)的初始值设定项构造中调用方法 我问这个问题的原因是因为我试图使用LINQtoXML语句在初始值设定项中使用gater数据。这是行不通的。但是,如果我事先将数据保存到局部变量中,它就可以正常工作。我只是想知道为什么会发生这种情况,因为我已经找出了代码中的错误 不起作用: SavedData sData = new SavedData() { exportLocation = data.Root.Descendants("ExportLocation

C#的规范是否阻止从对象(或结构)的初始值设定项构造中调用方法

我问这个问题的原因是因为我试图使用LINQtoXML语句在初始值设定项中使用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
};

您可以在初始值设定项中调用方法,因此这里还发生了其他事情

以下对我来说很好:

    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])
感谢您为我指明了正确的方向。