c# - 何时分配类型?

标签 c#

所以,我最近一直在学习 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/

相关文章:

c# - JSON 返回 PascalCase 格式的属性,而不是 CamelCase 格式

c# - 解析 "Singleton"内的 InstancePerHttpRequest

c# - 如何最好地在多个应用程序中重用 MVC3 Controller / View ?

c# - c#中的静态变量是否有等价于 "this"

c# - .NET 工具 : Extract Interface and Implement Wrapper Class

c# - 发送带有附件 WinRT 的电子邮件

c# - 反射在C#中是如何实现的?

c# - 从字符串中删除特定的特殊字符

c# - 如何在 javascript 中编写等效于 Convert.ToBase64String() 的 javascript?

c# - 相同的系统,相同的代码,不同的行为 : The request was aborted: Could not create SSL/TLS secure channel