C# 代码错误:“需要对象引用才能访问非静态字段、方法或属性”
提供的代码片段在类 2(实现算法)中引发错误,原因是尝试从静态方法 Main()
访问非静态方法 GetRandomBits()
。
在 Main()
方法中,Population[i].bits = GetRandomBits();
这一行导致了错误。问题在于 GetRandomBits()
是 Program
类中的非静态方法,而 Main()
是静态方法。
解决方案:静态与非静态
解决方法:
Program
类的实例,并从该实例调用 GetRandomBits()
。<code class="language-csharp">// 创建 Program 实例 Program p = new Program(); // 从实例访问非静态方法 Population[i].bits = p.GetRandomBits();</code>
GetRandomBits()
设置为静态:通过在方法声明前添加 static
关键字,将 GetRandomBits()
方法修改为静态方法。<code class="language-csharp">public static string GetRandomBits() { // 在此处实现方法逻辑... }</code>
选择哪种方法取决于你的程序设计和 GetRandomBits()
方法的用途。如果 GetRandomBits()
需要访问类的其他非静态成员,则必须使用第一种方法(创建实例)。如果 GetRandomBits()
不需要访问类的非静态成员,则第二种方法(将其设为静态)更简洁。 记住,过度使用静态方法可能会降低代码的可测试性和可维护性。
以上是为什么C#中静态方法调用非静态方法时出现'需要对象引用”?的详细内容。更多信息请关注PHP中文网其他相关文章!