C# 对象即使在实例化时也指向 null?

C# Objects pointing to null even when instantiated?

提问人:Shaz 提问时间:5/24/2017 更新时间:5/24/2017 访问量:680

问:

  • 我有一个名为 Game 的公共类,它是静态的。

  • 在类中,我有两个私有指针变量 cards 和 hands[]。

在类中,我还有一个静态 game() 方法,用于实例化两个指针以将它们指向它们的类实例对象。

问题:属性/指针在 Visual Studios 中显示绿色下划线,调试时显示对象为 null。我不明白?`

System.NullReferenceException:“对象引用未设置为对象的实例。

public static class Game {
    private static Card card;
    private static Hand[] hands;

   public static void Game() {

       Card card = new Card(true);
       Hand[] hands = new Hand[2];
   }
}

`

C# Visual-Studio OOP 对象 NullReferenceException

评论

4赞 Mike Zboray 5/24/2017
您正在定义局部变量并隐藏字段。cardhands

答:

1赞 ProgrammingLlama 5/24/2017 #1

Card card = ...创建一个名为 card 的局部变量。它不会对类级“卡”执行任何操作。

改变

Card card = new Card(true);
Hand[] hands = new Hand[2];

card = new Card(true);
hands = new Hand[2];
4赞 John Koerner 5/24/2017 #2

首先,您的代码将无法编译,因为您不能有一个名称与封闭类型相同的静态方法。

但是,假设您正在尝试使用静态构造函数。如果是这样,则声明 和 的方法级变量。如果要使用类成员字段,则在分配变量时只需不包含类型即可。例如:cardhands

static Game()
{
    card = new Card(true);
    hands = new Hand[2];
}