C# CS0120 对象引用对于非静态的字段、方法或属性“Random.Next(int)”是必需的

错误 CS0120 表示在C#中发生了对象引用错误,即尝试访问非静态成员(字段、方法或属性)时未提供对象实例。具体来说,对于 Random.Next(int) 方法而言,它是一个实例方法,需要通过 Random 类的实例来调用。

错误示例:

csharp
int randomNumber = Random.Next(100); // 错误:Random.Next(int)是实例方法,需要通过实例调用

正确示例:

要解决这个错误,需要首先创建 Random 类的实例,然后通过该实例来调用 Next(int) 方法。

csharp
Random random = new Random(); int randomNumber = random.Next(100); // 正确:通过实例调用Random.Next(int)方法

解释:

  • 静态 vs 非静态方法

    • 静态方法是类的一部分,可以直接通过类名调用,如 Random.Next(int),它不依赖于类的任何实例。
    • 非静态方法(实例方法)依赖于类的实例,因此在调用时需要先创建类的对象,然后通过该对象调用方法。
  • 错误原因: 当你尝试像 Random.Next(int) 这样的实例方法时,如果未提供 Random 类的实例,编译器无法确定要调用的对象是哪个,因此会出现 CS0120 错误。

  • 解决方法: 通过创建类的实例来调用实例方法,确保对象引用是可用的。在上述示例中,使用 new Random() 创建了一个 Random 类的新实例,并将其存储在变量 random 中,然后可以使用 random.Next(100) 来生成一个介于 0 和 99 之间的随机整数。

通过理解和正确使用对象实例来调用实例方法,可以避免 CS0120 错误,并确保代码按预期工作。