[백준] C# : 이상한 기호 (15964번)

ssu_hyun·2022년 7월 27일
0

Data Structure & Algorithm

목록 보기
41/67
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Baekjoon
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] s = Console.ReadLine().Split();
            int a = int.Parse(s[0]);
            int b = int.Parse(s[1]);

            Console.WriteLine(HyoJin(a, b));
        }

        static int HyoJin(int x, int y)
        {
            int result = (x + y) * (x - y);
            return result;
        }
    }
}

위 코드를 아래와 같이 작성하면

static void Main(string[] args)
{
    string[] s = Console.ReadLine().Split();
    int a = int.Parse(s[0]);
    int b = int.Parse(s[1]);

    Console.WriteLine(HyoJin(a, b));
}
int HyoJin(int x, int y)
{
     int result = (x + y) * (x - y);
     return result;
}

다음과 같은 컴파일러 에러가 발생하는데

비정적 필드, 메서드 또는 속성 ‘member’에 대한 개체 참조가 필요합니다.

이는 함수를 호출하기 전 클래스의 인스턴스를 만들지 않았기 때문에 발생하는 문제이다.
위 에러의 해결방법은 두 가지가 있는데 맨 위 코드처럼 (1) static을 함수 선언시에 붙여주거나 아래와 같이 (2)클래스의 인스턴스를 만든 후 메서드를 사용하는 방법이 있다.

class Program
{
    static void Main(string[] args)
    {
        string[] s = Console.ReadLine().Split();
        int a = int.Parse(s[0]);
        int b = int.Parse(s[1]);

        // 클래스 인스턴스 생성
        var p = new Program();
        // Program 클래스의 HyoJin 메소드 사용
        Console.WriteLine(p.HyoJin(a, b));
    }

    int HyoJin(int x, int y)
    {
        int result = (x + y) * (x - y);
        return result;
    }
}

위 같은 에러는 정적 메서드 (static)에서 비정적 메서드를 호출하는 경우에도 생성되는데 이 또한 먼저 클래스의 인스턴스를 만든 후 호출하면 해결된다.

0개의 댓글