哪一个更好用?
int xyz = 0;
Run Code Online (Sandbox Code Playgroud)
要么
int xyz= default(int);
Mat*_*hen 35
int xyz = 0;
Run Code Online (Sandbox Code Playgroud)
为什么让人们认为不仅仅是必要的? default对于通用代码很有用,但在这里它不会添加任何内容.您还应该考虑是否在正确的位置初始化它,并且具有有意义的值.有时您会看到堆栈变量,代码如下:
int xyz = 0;
if(someCondition)
{
// ...
xyz = 1;
// ...
}
else
{
// ...
xyz = 2;
// ...
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您应该延迟初始化,直到获得实际值.做:
int xyz;
if(someCondition)
{
// ...
xyz = 1;
// ...
}
else
{
// ...
xyz = 2;
// ...
}
Run Code Online (Sandbox Code Playgroud)
编译器确保您不使用未初始化的堆栈变量.在某些情况下,您必须使用无意义的值,因为编译器无法知道代码将永远不会执行(由于异常,调用Exit等).这是规则的例外(没有双关语).
Inc*_*ito 14
这取决于你想要达到的目标.
我会比较喜欢
int xyz = 0;
Run Code Online (Sandbox Code Playgroud)
因为我相信它更具可读性而且不会令人困惑.
default关键字主要适用于泛型.
default运算符的目的是为您提供类型的默认值,但主要是为了允许泛型具有声明为其泛型类型参数的值的有效值.
我没有确凿的证据,但我怀疑编译器会在您的特定情况下为两者发出相同的代码.
但是,这里合法使用default:
public T Aggregate<T>(IEnumerable<T> collection, Func<T, T, T> aggregation)
{
T result = default(T);
foreach (T element in collection)
result = aggregation(result, element);
return result;
}
Run Code Online (Sandbox Code Playgroud)
没有default,上面的代码需要一些黑客才能编译和正常运行.
所以使用第一个,设置它0.
| 归档时间: |
|
| 查看次数: |
545 次 |
| 最近记录: |