当我在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提示我检查command != null,它说command可能未被赋值(因为在构造过程中可能会失败并仍然命中try块)。
于是我将command的声明更改为SqlCeCommand command = null;
,这样大家都很开心。
但我想知道这样做有什么区别?
为什么C#不直接默认将局部变量设置为null呢?意思是: C#从不将局部变量默认设置为null对其有何益处?