使用和不使用Constructor声明C#变量

时间:2014-09-17 06:54:07

标签: c#

我怀疑这个问题很长一段时间。可能这是正确的论坛..

C#中两种类型的变量声明有什么区别吗?如果是这样,有什么不同,哪种是最佳做法。

  DataTable dt;

VS

  DataTable dt=new Datatable();

4 个答案:

答案 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,那么启动一个不会被使用的实例是不合理的。