在.NET中初始化空变量

kof*_*cii 7 .net c# variables initialization

在.NET中初始化null变量的正确方法是什么?我的一位同事告诉我,将变量硬定义为null是一种放缓.

int var1;          // good practice
string s1;         // good practice

int var2 = 0;      // bad practice
string s2 = null;  // bad practice
Run Code Online (Sandbox Code Playgroud)

那是对的吗?

Jon*_*eet 9

假设您实际上是指默认值而不是值,如果您实际在构造函数中而不是在变量声明中赋值,则可能会非常非常轻微地减慢速度.如果它是变量声明的一部分,我可能希望JIT编译器删除不必要的赋值,因为在第一次初始化时擦除了对象的内存.

然而,在任何一种情况下,这种重要性的可能性都非常小.

你觉得哪种形式更易读?在绝大多数情况下,这一点更为重要.

编辑:请注意,至少对于静态字段,有一些细微的情况,两者的行为方式不同.这是一个例子 - Test1和Test2类y声明是否具有赋值方面有所不同:

using System;

class Test1
{
    static int x = GetX();
    static int y = 0;

    public static void Hello()
    {
        Console.WriteLine("{0} {1}", x, y);
    }

    static int GetX()
    {
        y = 2;
        return 5;
    }
}

class Test2
{
    static int x = GetX();
    static int y;

    public static void Hello()
    {
        Console.WriteLine("{0} {1}", x, y);
    }

    static int GetX()
    {
        y = 2;
        return 5;
    }
}

class Test
{
    static void Main()
    {
        Test1.Hello();
        Test2.Hello(); 
    }
}
Run Code Online (Sandbox Code Playgroud)