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)
那是对的吗?
假设您实际上是指默认值而不是空值,如果您实际在构造函数中而不是在变量声明中赋值,则可能会非常非常轻微地减慢速度.如果它是变量声明的一部分,我可能希望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)