C#里类型初始化器和构造方法有什么区别 他们分别在什么情况下用?

2025-02-01 19:53:52
推荐回答(2个)
回答1:

其实类型初始化器只是一种语法糖这样写MyClass a=new MyClass{ filedOne="a" ,filedTwo="b" };会被编译器编译成和如下结构相同的IL代码MyClass a=new MyClass();a.filedOne="a";a.filedTwo="b";所以从CLR公共语言运行时的角度来看,它们完全一样,没有任何区别。
为什么C# 3.0要引入这一概念?如楼上说的那样 “ 构造函数是在你声明......” 这样一来我们写代码可以更灵活。其实C#的语法糖还很多,像可空类型和LINQ,全都是语法糖,是编译器帮我们做了背后的工作。不过我们还是不能小瞧它们,至少在思考问题的方式上它们是创新的。

回答2:

构造函数是在你声明一个类的时候可以允许你动态传入初始化参数的。而初始化器发生在一个类产生之后(new了之后,且初始化是代码中写死的,不能动态修改的)