Microsoft MVP성태의 닷넷 이야기
C# 7.1 185~187p 질문입니다. [링크 복사], [링크+제목 복사],
조회: 15512
글쓴 사람
꾸엉
홈페이지
첨부 파일
 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

public class Mathematics
{
    delegate int CalcDelegate(int x, int y);

    static int Add(int x, int y) { return x + y; }
    static int Subtract(int x, int y) { return x - y; }
    static int Multiply(int x, int y) { return x * y; }
    static int Divide(int x, int y) { return x / y; }

    CalcDelegate[] methods;

    public Mathematics()
    {
        methods = new CalcDelegate[] { Mathematics.Add,
            Mathematics.Subtract, Mathematics.Multiply, Mathematics.Divide };
    }

    public void Calculate(char opCode, int operand1, int operand2)
    {
        switch (opCode)
        {
            case '+':
                Console.WriteLine("+ : " + methods[0](operand1, operand2));
                break;

            case '-':
                Console.WriteLine("- : " + methods[1](operand1, operand2));
                break;

            case '*':
                Console.WriteLine("* : " + methods[2](operand1, operand2));
                break;

            case '/':
                Console.WriteLine("/ : " + methods[3](operand1, operand2));
                break;
        }
    }
}

namespace Study1
{

    class Program
    {
        delegate void WorkDelegate(char arg1, int arg2, int arg3);

        static void Main(string[] args)
        {
            Mathematics math = new Mathematics();
            WorkDelegate work = math.Calculate;

            work('+', 10, 5);
            work('-', 10, 5);
            work('*', 10, 5);
            work('/', 10, 5);
        }
    }
}



델리게이트를 공부하고 있는데요

왜 이번 예제에서는 Mathematics 클래스의 접근 제한자를 public으로 해서
namespace 밖에서 선언(?)을 한건가요?



그리고 static int Add(int x, int y) { return x + y; }
이 부분에서 static을 지우고 실행하면


        methods = new CalcDelegate[] { Mathematics.Add,
            Mathematics.Subtract, Mathematics.Multiply, Mathematics.Divide };

이 구문에서 Mathematics.Add 부분이 오류가 발생하던데

이 코드에서 static이 어떤 역할을 해주기에 static을 지우면 오류가 발생하는건가요?
ㅜㅜ static에 대한 개념을 잘 모르겠습니다..








[최초 등록일: ]
[최종 수정일: 10/29/2018]


비밀번호

댓글 작성자
 



2018-10-29 10시22분
namespace는 임의 관리 단위일 뿐 프로그램의 논리와는 상관이 없는 부분입니다. 그리고 static을 빼면 instance 멤버가 되기 때문에 그 앞에 클래스 이름을 붙일 수 없습니다. 따라서 "Mathematics.Add"라고 하면 안 되고 그냥 "Add"라고 해야 합니다.


정성태
2018-10-29 01시00분
[꾸엉] 감사합니다~!
[guest]

... 76  77  78  79  80  81  82  83  84  85  86  [87]  88  89  90  ...
NoWriterDateCnt.TitleFile(s)
298정말초짜1/12/200610916smart client 질문입니다. [1]
296우승우1/4/200610569스마트클라이언트에서 COM+를 이용한 데이터 가져 오기..
297정성태1/4/200612561    답변글 [답변]: 스마트클라이언트에서 COM+를 이용한 데이터 가져 오기.. [2]
295이경호12/22/200510866스마트 클라이언트 관련 고견을 듣고자 합니다. [1]
294김성국12/21/200512759^^ 오늘 첨 방문했습니다. [2]
292궁금해요12/16/200511874c#으로 개발된 ie 임베디드 smart client를 php페이지에서 사용이 가능한가요?
293정성태12/21/200512528    답변글 [답변]: c#으로 개발된 ie 임베디드 smart client를 php페이지에서 사용이 가능한가요?
290이종은12/16/200519415개체가 이 속성 또는 메서드를 지원하지 않습니다. [3]
289이진우12/14/200513105스마트 클라이언트 개념.. [1]
288박찬용12/13/200512229질문 한개만 할께요.. 아시면 꼭 답변 부탁드려요 [1]
287꼬마마법...12/13/200512851안녕하세요..죄송합니다. 다시 한번 봐주시면.. 감사 드리겠습니다. [2]
286정준명12/12/200512576윈폼 관리(?)에 대한 고민. [1]
285꼬마마법사12/10/200511111안녕하세요.. [1]
284코디12/8/200511427[질문] 스마트클라이언트 다운로드중에...... [1]
283foot...12/7/200510956스마트 클라이언트 질문 입니다. ㅜㅜ [2]
279박상규12/6/200511712스마트 클라이언트에 관해 질문좀 드릴께요..
280정성태12/6/200511545    답변글 [답변]: 스마트 클라이언트에 관해 질문좀 드릴께요..
281박상규12/7/200512782        답변글 [답변]: [답변]: 스마트 클라이언트에 관해 질문좀 드릴께요.. [2]
282정성태12/7/200511359            답변글 [답변]: [답변]: [답변]: 스마트 클라이언트에 관해 질문좀 드릴께요..
276하수12/2/200511060스마트 클라이언트 프로그램을 만들려면.. [1]
271정준명11/20/200513153스마트클라이언트 구현에 대해서 조언을 듣고자 합니다. [5]
269상수11/18/200511385vs2005를 사용하고 있습니다. [1]
270상수11/18/200510865    답변글 [답변]: vs2005를 사용하고 있습니다. [1]파일 다운로드1
272상수11/21/200510351        답변글 [답변]: [답변]: ㅈㅅ여.. 인터넷이 사용이 안돼서리..dll을 치면 나타나는 현상 [1]
268상수11/17/200510523vs2005를 사용하고 있는데.. [1]
26711/16/200512044COM+ 의 활성화 상태... [1]
... 76  77  78  79  80  81  82  83  84  85  86  [87]  88  89  90  ...