实例化与类型化引用

时间:2010-05-13 12:53:14

标签: c# instantiation

就在我认为我开始理解基础知识的时候,我找到了一些让我回到现实的东西。在这种情况下,键入引用。

我找到了一个类似的例子:

class Worker
{
Boss boss;

public void Advise(Boss pBoss)
{
    this.boss = pBoss;
}

如果Boss类中的方法不是静态的而不是实例化的,那么如何引用Boss类中的方法?

我想我真正的问题是:

之间的区别
Boss boss;


Boss boss = new Boss();

5 个答案:

答案 0 :(得分:9)

Boss boss;创建一个名为boss的{​​{1}}字段,默认值为Boss

null创建一个名为Boss boss = new Boss();的{​​{1}} 类型的变量,并存储对该变量中boss类型的新实例的引用

答案 1 :(得分:1)

只需拥有代码Boss boss;,您就可以创建类型为Boss的类。当您使用代码Boss boss = new Boss();实例化类或在this.boss = pBoss;方法中设置变量Advise时,您将能够访问Boss的实例化实例上的方法和属性。 1}}对象。

答案 2 :(得分:1)

字段boss可以包含对类Boss的实例的引用。最初,boss包含null,这意味着它不会引用任何实例。说new Boss()会创建Boss的新实例。您可以在boss中存储对此新实例的引用。

pBoss也可以包含对Boss实例的引用,您可以通过说boss将此引用存储在boss = pBoss中。

答案 3 :(得分:1)

  

如何引用其中的方法   Boss类如果不是静态的   没有实例化?

你做不到。除了int之类的内置数据类型之外,总是必须实例化变量。

this.pBoss = Boss;仅在Boss类型的对象已在其他地方实例化并作为参数传递给Advise()时才有效。如果以这种方式调用它:

Advise(null);

...然后你仍然无法使用Worker.boss(它会抛出异常)。

对于它的价值,这在C ++这样的低级语言中更为明显。

答案 4 :(得分:0)

Advise()方法接受Boss类的实例,然后将私有字段设置为该Boss实例。一旦调用了Advise方法并设置了Boss实例,Worker类就可以使用Boss公开的任何方法或属性。