【发布时间】:2011-02-23 20:23:58
【问题描述】:
当我用 C# 编写以下代码时:
SqlCeCommand command;
try
{
// The command used to affect the data
command = new SqlCeCommand
{
// init code removed for brevity
};
// Do stuff
// Do more stuff
}
finally
{
if (command != null)
command.Dispose();
}
Resharper 抱怨我对命令的检查!= null。它表示该命令可能未分配(因为它可能会在构造过程中失败并仍然命中 try 块)。
所以我把命令的声明改成SqlCeCommand command = null;,大家都很开心。
但我想知道有什么区别?
为什么它不默认为空? 含义: C# 不仅将局部变量默认为 null,对 C# 有何好处?
【问题讨论】:
-
因为 C++ 似乎是唯一“真正”的答案。
标签: c# null initialization