안녕하세요 오늘 포스팅 할 사항은, C# 에서 class 구현 시 class 내에 구성한 메소드 Type에 대한 내용입니다. 이번 포스팅에서는 인스턴스에 속한 메소드이냐 아니냐로 구별해서 하나 하나 설명해 드리겠습니다.
그럼 C# 전문 용어로는, 정적 필드 메소드와 인스턴스 소속 메소드(이건 제가 생각한 내용입니다.)에 대해서 설명 드리도록 하겠습니다.
정적 필드 메소드
: 말 그대로, 정적 즉, 메모리를 기존에 할당하는, static 구문을 사용하여, 인스턴스 소속이 아닌, class 소속으로서, 바로 이용할 수 있는 메소드를 이야기 합니다.
인스턴스 소속 메소드
: 인스턴스 소속 메소드란, 클래스 내에 선언한 메소드는 Main 코드 창에서 인스턴스를 필수적으로 선언 후, 인스턴스의 하위 단계 즉, 메소드를 불러와서 구현하는 메소드입니다.
- 이해를 돕기 위해서 아래와 같이 간단하게 비교해서 설명해드리겠습니다.
=====================================================================
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApp1
{
class Class1
{
static int test1(int a) // 인스턴스를 선언하지 않고 사용할 수 있는 정적 필드 메소드
{
int add1 = 10;
Console.WriteLine(a);
return a + add1;
}
string test2(string b) // 인스턴스를 꼭 선언해서 사용할 수 있는 메소드
{
string result = b;
string add2 = "추가 항목";
Console.WriteLine(result);
return result + add2;
}
static void Main(string[] args)
{
Class1 result1 = new Class1(); // Class1 클래스를 이용하여, 인스턴스를 선언.
Console.WriteLine("Result 값은 아래와 같습니다.");
Class1.test1(10); // 인스턴스를 선언하지 않고, Class1으로 바로 test1 메소드 호출.
result1.test2("test"); // Class1 클래스를 이용하여, 선언한 인스턴스를 이용하여 메소드 호출.
Console.WriteLine("return value 까지 같이 출력하고 싶으면 아래와 같습니다.");
Console.WriteLine($"{Class1.test1(10)}"); // 인스턴스를 선언하지 않고, Class1으로 바로 호출.
Console.WriteLine($"{result1.test2("test")}"); // 인스턴스를 꼭 선언해야 함.
}
}
}
=====================================================================
- Run을 해보면, 아래와 같이 출력값을 확인 하실 수 있습니다. 여기에서 인스턴스를 사용한 부분과 사용하지 않고, 바로 class에서 호출한 메소드의 사용법을 구별해서 이해하시면 더 도움이 되실 거라고 생각합니다. 저는 처음 공부할 때는 이 부분이 좀 헷갈렸던 부분이였습니다. (이번 Posting 결과값이랑 거의 똑같지만 코드 구성은 틀립니다. 참조하세요)
이상입니다. class 내에서 선언하는 메소드 이용하는 방법과 타입을 잘 이해를 하면, Main 코드 창에서 호출해서 사용하실 때 정말 편하실 거라고 생각합니다. 요즘 저도 코딩 짤 때 이 부분이 오류를 제일 많이 범하고 있습니다. 그래서 왜 틀렸지라고 자문해보면, 인스턴스 생성하는게 습관이 되서 그런거 같습니다. 이번에도, 제 글이 조금이나 도움이 되셨으면 좋겠네요. 모두가 C# 프로그래머가 되는 그날 까지 화이팅입니다. (이전에 말씀 드렸지만, 하나 하나씩 알아가는게 그것도 하나의 재미인 거 같습니다.)
[저작권이나, 권리를 침해한 사항이 있으면 언제든지 Comment 부탁 드립니다. 검토 후 수정 및 삭제 조치 하도록 하겠습니다. 그리고, 기재되는 내용은 개인적으로 습득한 내용이므로, 혹 오류가 발생할 수 있을 가능성이 있으므로, 기재된 내용은 참조용으로만 봐주시길 바랍니다. 게시물에, 오류가 있을때도, Comment 달아 주시면, 검증 결과를 통해, 수정하도록 하겠습니다.]
댓글