所以,我最近一直在学习 C#,但有一件事我无法弄清楚或找不到答案:
考虑一下:
class Class1 {
int myInt = 32;
}
还有这个:
class Class1 {
int myInt;
public Class1(){
myInt = 32;
}
}
我只是想知道什么时候以及为什么我应该使用一种方法而不是另一种方法来分配或实例化值。
最佳答案
首先,当初始化需要显式或隐式引用“this”时,您必须在构造函数中进行初始化:
class C
{
int x = MakeX();
int MakeX() { whatever }
}
这是非法的,因为调用是隐式调用 this.MakeX()
并且您甚至还没有运行 ctor,所以使用 this< 可能是错误的
. 这是合法的:
class C
{
int x;
int MakeX() { whatever }
public C() { this.x = this.MakeX(); }
}
因为显然我们不能限制 this
在 ctor 主体本身中的使用。
另请注意,字段初始值设定项按从最派生到最少派生的顺序运行并首先运行。基类构造函数按从最少派生到最多派生的顺序运行,其次。这无关紧要,但无论如何了解它都会有所帮助。
一般来说,建议只是“保持一致”。不要在构造器主体中使用初始化器和一些 with 语句初始化某些字段;选择一个并始终如一地做。
关于c# - 何时分配类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10183443/