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

您如何看待在C#中使用属性作为对象初始值设定项;

如何解决《您如何看待在C#中使用属性作为对象初始值设定项;》经验,为你挑选了2个好方法。

我想知道人们在C#中使用属性作为对象初始化器的想法.由于某种原因,它似乎打破了构造函数的基本原理.

一个例子...

public class Person
{
    string firstName;
    string lastName;

    public string FirstName
    {
      get { return firstName; }
      set { firstName = value; }
    }

    public string LastName
    {
      get { return lastName; }
      set { lastName= value; }
    }
}

然后用.....做对象初始化

Person p = new Person{ FirstName = "Joe", LastName = "Smith" };
Person p = new Person{ FirstName = "Joe" };

Jorge Ferrei.. 10

你在这里看到的是编译器提供的一些合成糖.在引擎盖下它真正做的是:

Person p = new Person(FirstName ="Joe",LastName ="Smith");

Person _p$1 = new Person();
_p$1.FirstName = "Joe";
_p$1.LastName = "Smith";
Person p = _p$1;

所以恕我直言,你并没有真正打破任何构造函数基础,但使用一个很好的语言工件,以便于可读性和可维护性.



1> Jorge Ferrei..:

你在这里看到的是编译器提供的一些合成糖.在引擎盖下它真正做的是:

Person p = new Person(FirstName ="Joe",LastName ="Smith");

Person _p$1 = new Person();
_p$1.FirstName = "Joe";
_p$1.LastName = "Smith";
Person p = _p$1;

所以恕我直言,你并没有真正打破任何构造函数基础,但使用一个很好的语言工件,以便于可读性和可维护性.



2> Hallgrim..:

对象初始值设定器绝不会替换构造函数.构造函数定义了您必须遵守的合同,以便创建类的实例.

C#语言中对象初始化器的主要动机是支持匿名类型.

var v = new { Foo = 1, Bar = "Hi" };
Console.WriteLine(v.Bar);

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