C# 코드 오류: "비정적 필드, 메서드 또는 속성에 액세스하려면 개체 참조가 필요합니다."
제공된 코드 조각은 정적 메서드 에서 비정적 메서드 에 액세스하려고 시도하여 Main()
클래스 2(알고리즘 구현)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 중국어 웹사이트의 기타 관련 기사를 참조하세요!