我怀疑这个问题很长一段时间。可能这是正确的论坛..
C#中两种类型的变量声明有什么区别吗?如果是这样,有什么不同,哪种是最佳做法。
DataTable dt;
VS
DataTable dt=new Datatable();
答案 0 :(得分:4)
第一个你只是声明,第二个你声明和初始化。
如果您在未初始化的情况下使用任何类的实例,那么您将null
引用异常作为Object reference not set to an instance of an object
答案 1 :(得分:0)
http://msdn.microsoft.com/en-us/library/ms173109.aspx
如果DataTable是一个结构,它们是相同的
如果不是DataTable dt;
意味着创建对名为dt的DataTable
的empy引用;
'new Datatable();'表示使用垃圾收集器中的Datatable
对象初始化引用
答案 2 :(得分:0)
在我看来,最佳做法是始终在构造函数中初始化变量,而不是在声明中。这主要是为了保持一致,如果你想看看如何初始化一个类型,你应该总是只需要查看构造函数。
答案 3 :(得分:0)
第一个dt可以包含继承DataTable
的DataTable或对象,第一个dt的值在第一个dt完成后将为null
。
第二个dt可以包含继承DataTable的DataTable
或对象,您使用DataTable
的空构造函数启动它,因此它不会是null
。
“最好的Parctice”取决于你想用dt做什么。
例如,如果你在下一行有一个方法返回一个新发起的DataTable
,那么启动一个不会被使用的实例是不合理的。