728x90
Main()이 있는 클래스 안에서 "개체 참조가 필요합니다." 의 오류가 났다.
Unity가 아닌 콘솔로 이용한 C#은 정말 오랜만에 다뤄보고 이해하기 위해 작성을 해보고자 한다.
문제 상황
namespace ConsoleApp1
{
internal class Program
{
static void Main(string[] args)
{
string num;
Console.WriteLine("두 개의 숫자를 입력해주세요.");
num = Console.ReadLine();
string[] nums = num.Split(' ');
NumberCalculator(int.Parse(nums[0]), int.Parse(nums[1])); //Error
}
public void NumberCalculator(int num1, int num2)
{
Console.WriteLine("더하기 : {0}", num1 + num2);
Console.WriteLine("빼기 : {0}", num1 - num2);
Console.WriteLine("나누기 : {0}", num1 / num2);
Console.WriteLine("곱하기 : {0}", num1 * num2);
}
}
}
위의 코드를 사용하게 된다면 Main내의 "NumberCalculator" 에서 개체 참고의 오류가 발생한다.
그 이유는 Main 함수가 Static으로 되어있기 때문이다.
"개체 참고가 필요합니다" 의 의미는 해당 모듈을 사용하기 위해선 아래의 요소가 필요하다.
🔻 해당 모듈이 속한 Class의 개체를 만든다
🔻 그 개체의 멤버로서 모듈을 실행
1. 모듈을 public static 모듈
◼ 개체 생성없이 class명으로 사용
◼ 해당 방법을 이용할 경우 반드시 public으로 해야지 다른 클래스에서 접근이 가능
◼ 전역 변수를 사용하기 위해선 해당 클래스안에 변수는 static으로 선언
namespace ConsoleApp1
{
class Calculator
{
public static void NumberCalculator(int num1, int num2)
{
Console.WriteLine("더하기 : {0}", num1 + num2);
Console.WriteLine("빼기 : {0}", num1 - num2);
Console.WriteLine("나누기 : {0}", num1 / num2);
Console.WriteLine("곱하기 : {0}", num1 * num2);
}
}
internal class Program
{
static void Main(string[] args)
{
string num;
Console.WriteLine("두 개의 숫자를 입력해주세요.");
num = Console.ReadLine();
string[] nums = num.Split(' ');
Calculator.NumberCalculator(int.Parse(nums[0]), int.Parse(nums[1]));
}
}
}
2. 인스턴스 모듈
◼ 모듈이 속한 class 개체를 만든 후 모듈의 속한 Class의 개체를 만듬
◼ 새로운 개체 만들기 : 클래스명 개체명 = new 클래스명()
◼ 개체의 멤버로써 모듈을 사용
namespace ConsoleApp1
{
class Calculator
{
public void NumberCalculator(int num1, int num2)
{
Console.WriteLine("더하기 : {0}", num1 + num2);
Console.WriteLine("빼기 : {0}", num1 - num2);
Console.WriteLine("나누기 : {0}", num1 / num2);
Console.WriteLine("곱하기 : {0}", num1 * num2);
}
}
internal class Program
{
static void Main(string[] args)
{
string num;
Console.WriteLine("두 개의 숫자를 입력해주세요.");
num = Console.ReadLine();
string[] nums = num.Split(' ');
Calculator cal = new Calculator(); //새로운 개체 생성
cal.NumberCalculator(int.Parse(nums[0]), int.Parse(nums[1])); //객체내 함수 실행
}
}
}
참고 사이트
728x90
'Unity > 개념 공부' 카테고리의 다른 글
[ 내일배움캠프 ] TIL.10 - Newtonsoft.Json (1) | 2024.04.26 |
---|---|
[ 내일배움캠프 ] TIL.06 - C# 문법 종합반 2주차 강의_숙제 (0) | 2024.04.22 |
[ 내일배움캠프 ] TIL.06 - C# 문법 종합반 1주차 강의_숙제 (0) | 2024.04.22 |
[ 내일배움캠프 ] TIL.05 - Unity 저장 경로 (0) | 2024.04.19 |
[ 내일배움캠프 ] WIL.05 - 프로젝트 발표 & 회고록 (0) | 2024.04.19 |