什么是新的'做C#?

时间:2016-02-03 00:18:19

标签: c#

以下是我所谈论的一个例子。

5400_filenameconstant_$date.csv

现在想象一下其他文件,你做

class Car()
{
    int speed = 50;
}

有什么不同
Car truck;

我已经使用C#一年多了,但仍然没有得到这个。它是一种开关型的东西。

2 个答案:

答案 0 :(得分:2)

Car truck;不会任何事情。你用这一行代码说的就是你最终可能有或没有Car类型的对象,你要将它称为truck

Car truck = new Car();声明您要引用名为Car的{​​{1}}(就像之前一样),但是给出了命名为您正在实例化的实际truck对象。

继续用一个(有些缺陷的)概念来描述汽车:Car是一个停车位,Car truck;是你刚建造一辆新车的停车位。

答案 1 :(得分:1)

首先我要说的是classstruct是如何解决这一问题的,但是现在我会忽略struct来简化事情:

  

现在想象一下在其他文件中,你做了   Car truck;

这会创建一个可能包含Car实例的变量(或某些情况下的字段),但它不会创建这样的实例。请注意,如果它实际上是一个字段(因为它在class定义中而不在方法中),那么它将获得默认值null。如果它是局部变量,则尝试访问它是编译器错误。

这不是Car的实例,并且尝试将其视为这样会导致发生错误,除非它是一个字段并且您正在调用一个接受null的方法。

  

与中国有何不同   Car truck = new car();

通过将= new Car();放在;之前,您告诉语言使用默认构造函数(即()构造函数的术语)为您提供实例。这会导致创建类的新实例,并调用您提供的构造函数来初始化该新实例。

请注意,在这种情况下,您有一个有效的Car,它可以按照您的预期工作,而前一个则没有。{/ p>

简而言之,如果你想让一个地方持有Car使用第一个定义,如果你真的想要一辆车,请使用第二个。

现在我要扩展struct,重要的是要记住,但它们并不像课程那么普遍,所以你可以专注于上述。

  

现在想象一下在其他文件中,你做了   StructCar truck;
  这有什么不同于   StructCar truck = new StructCar();

现在它们是相同的,它们都创建一个变量或字段,并调用StructCar的默认构造函数。这将依次将每个字段设置为其默认值(在任何struct上调用默认构造函数并将class设置为null)。这是一个完全有效的StructCar,但要小心,因为每次你把它交给某人(通过调用一个方法并将其作为参数传递),他们将得到一份副本,而不是原件。另请注意,在StructCar的定义中,您无法定义默认构造函数,它也会执行我在此处描述的内容。