当前位置:  开发笔记 > 编程语言 > 正文

收集初始化器的奇怪语法

如何解决《收集初始化器的奇怪语法》经验,为你挑选了0个好方法。

假设,我们有一个非常简单的类:

class ObjectList {
    public List List1 { get; } = new List();
    public List List2 { get; set; }
}

我们想要创建这个类的实例:

ObjectList objectList = new ObjectList {
    List1 = { "asdf", "qwer" },
    List2 = new List { "zxcv", "1234" }
};

所以,在List2的情况下,没关系,使用"="我们设置属性.但是在List1的情况下,它看起来像我们设置属性,但实际上,我们假设在之前设置它,在这里我们只设置值.它与数组初始化非常相似:

string[] arr = { "val1", "val2" }

为什么C#在这里使用这种令人困惑的语法?

编辑:我想我用C#6.0语法让很多观众感到困惑,但这不是重点.让我们使用旧的C#3.0和.net 2.0.并且让我们添加更多乐趣,并从头开始添加一些值("1"和"2")到列表中,正如Jeff Mercado建议的那样:

class Program {
    static void Main(string[] args) {
        ObjectList objectList = new ObjectList {
            List1 = { "asdf", "qwer" },
        };
    }
}
class ObjectList {
    List _List1 = new List() { "1", "2" };
    public List List1 {
        get {
            return _List1;
        }
    }
}

它显示了相同的奇怪语法.最后我列出了{"1","2","asdf","qwer"},这更令人困惑.我可以期待这一点.

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有