C#构造函数应该初始化字段还是属性

在创建一类的时候,有参数的构造函数应该初始化字段还是属性?
如下:
class Test
{
/*使用字段初始化
public Test(int a1,string a2)
{
this._testField1=a1;
this._testField2=a2;
}
*/
//使用属性初始化
public Test(int a1,string a2)
{
this.TestProperty1=a1;
this.TestProperty2=a2;
}

public void WriteField()
{
Console.Write("TestField1:"+_testField1.ToString()+
"\nTestFiled2:"+_testField2+"\n");
}

public void WriteProperty()
{
Console.Write("TestProperty1:"+TestProperty1.ToString()
+"\nTestProperty2:"+TestProperty2+"\n");
}

public int TestProperty1
{
get{return _testField1;}
set{_testField1=value;}
}
public string TestProperty2
{
get {return _testField2;}
set {_testField2=value;}
}
private int _testField1=2;
private string _testField2="1";
}
有什么参考资料都贴上,谢谢~~
草剃在 ,你好
经过ILDasm查看IL就算是属性简单赋值,也会调用属性的setter
而字段的话就直接s赋值~

如果你的属性只是简单的做赋值和取值的话 效果一样其实
不过推荐你用属性 因为有可能你的属性在赋值或取值的时候会做一些操作 所以最好让字段赋值的时候经过这些操作避免无效值

不需要担心赋值属性会慢 因为如果C#编译器检测到属性简单赋值 会自动替换成字段赋值的 这点你可以从IL代码中看出来
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-08-28
效果都一样

C#构造函数应该初始化字段还是属性
不过推荐你用属性 因为有可能你的属性在赋值或取值的时候会做一些操作 所以最好让字段赋值的时候经过这些操作避免无效值 不需要担心赋值属性会慢 因为如果C#编译器检测到属性简单赋值 会自动替换成字段赋值的 这点你可以从IL代码中看出来

在C#的构造函数里面,是给字段还是给属性赋值?
构造函数和属性都是在为字段赋值,构造函数在类创建的时候就给字段赋值了,而属性是在类创建后,才给字段赋值的。属性是类内部外部交流的媒体,字段通过属性 将值传递给调用者!构造函数那肯定是在给字段复制!就是这么简单!

c#中的域,属性和构造函数的作用各是什么?都是初始化一个实例化的对象...
} -C\/C++中未经初始化的变量是不能使用的。在C#中,系统将为每个未经初始化的变量提供一个默认值。对于所有引用类型的变量,默认值是null。所有值类型的变量的默认值是固定的。对于静态域,类在装载时对其进行初始化;对于非静态域,在类的实例创建时进行初始化。在默认的初始化之前,域的值是...

c#:构造函数的作用,
简单来说可以传递参数,对一些变量等进行初始化。

c#结构中的构造函数是什么?
C++语言为类提供的构造函数可自动完成对象的初始化任务,全局对象和静态对象的构造函数在main()函数执行之前就被调用,局部静态对象的构造函数是当程序第一次执行到相应语句时才被调用。然而给出一个外部对象的引用性声明时,并不调用相应的构造函数,因为这个外部对象只是引用在其他地方声明的对象,并没有...

C#构造函数只有在对象实例化时才会执行吗?
1、构造函数的功能是对类成员进行初始化。2、类的静态成员需要用静态构造函数初始化。类的非静态成员需要用非静态构造函数初始化。3、静态构造函数只执行一次,时间是当类被装入内存的时候。非静态构造函数执行的次数不定,你new一个变量就执行一次,new十个变量就执行十次。

C#调用构造函数时在后面加一个函数体是什么用法?
这种语法是初始化里面的public属性。好处是创建实例的时候可以同时初始化属性,又不必要创建对应的构造函数。如果不用这种语法,你就只好写 Some some = new Some();some.xxx = yyy;zzz.ddd= some;

C#中实例构造函数能不能给静态字段初始化?求解答
实例构造函数是不会给静态变量初始化的,只能给静态变量赋新的数值。

C#高手进,关于属性的东西
我们将class类中的私有字段通过属性的方式向外部暴露,所以你可以通过构造函数给私有字段赋值,可以通过属性间接给私有字段赋值,但是如果你定义了属性的话,即使没有通过属性给私有字段赋值,私有字段还是会有默认值的,但是请记住,属性是没有值的,它值的来源还是类内部的成员字段。而且一个类在实例化的...

c#,构造函数里的initializecomponent()什么意思
在C#中,构造函数是一种特殊的方法,当创建类的新实例时,它会被自动调用。构造函数的目的是初始化新创建的对象的状态。在Windows Forms应用程序的窗体类中,构造函数通常会进行一些基本的设置和初始化操作。三、initializeComponent的细节 在窗体的构造函数中,通常首先会调用`initializeComponent`方法。这个...

相似回答