C# 4.0 의 새로운 Feature 에 대한 이야기를 하고자 한다.
왜  C# 은 세상개발자들이 폄하하는 위대한 VB 의 내용을 따라하는가?
(따라한다... 라는 말에 대해서도 해야할 말들이 많기는 하다... - 그것이 진정 따라하는 것인가? 라는 주제로... - 결론만 먼저 이야기 한다면 사람에 따라서 따라한다고 말을 할 수도 있겠지만... 그것은 시대적인 요구와 흐름에 의해서 자연적으로 발생한 것뿐.(참조는 했을수도 있겠지만... 따라했다고 비난할 것은 아니다 라는 것이 내 개인적인 생각이다.)

음... 여튼.. C# 4.0 에 새로나온 내용중  Optional 과 Named Parameter 에 대해서 말하고자 한다.

이 기능은 VB 를 해 본 사람이라면 기본적으로 알고 있는 아주 당연한 Feature 중 하나다.

여러분들중 개발을 조금이라도 해본(나같은 ㅋㅋㅋ) 초보자도 Method 의 Overloads 에 대해서 알고 있을 것이다.

Function 명은 같지만 Parameter 의 갯수가 다른... (Constructor 에도 적용되는...)

하나의 Person Class 를 만들어 보자.
public class Person
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Phone{ get; set; }
        public string Address{ get; set; }

        public Person(string lastName, string firstName)
        {
            LastName= lastName;
            FirstName= firstName;
            Phone= "N/A";
            Address= string.Empty;
        }
        public Person(string lastName, string firstName, string phone)
        {
            LastName= lastName;
            FirstName= firstName;
            Phone= phone;
            Address= string.Empty;

        }
        public Person(string lastName, string firstName, string address)
        {
            LastName= lastName;
            FirstName= firstName;
            Phone = string.Empty;
            Address= address;
        }
        public Person(string lastName, string firstName, string phone,
            string address)
        {
            LastName= lastName;
            FirstName= firstName;
            Phone = phone;
            Address= address;
        }
    }

 그리고 이런식으로 호출을 한다.
Person person= new Person(“우”, ”정환”);
Person person= new Person(“우”, ”정환”, "01023456789");
Person person= new Person(“우”, ”정환”, "서울시 서초구 서초동");
Person person= new Person(“우”, ”정환”, "01023456789", "서울시 서초구 서초동");

 이런 경우 C# 4.0 의 경우는 생성자를 아래와 같이 표현할 수 있다.
public Person(string lastName, string firstName,
            string phone = "N/A", string address = "")
{
    LastName= lastName;
    FirstName= firstName;
    Phone = phone;
    Address = address ;
}

간단하지 않은가? 이것이 바로 Optional Feature 이다.
그럼 어떻게 호출하는 지 볼까?
Person person= new Person(“우”,”정환”);
Person person= new Person(“우”,”정환”, "01023456789");
Person person= new Person(“우”,”정환”, "01023456789", "서울시 서초구 서초동");

똑같은가? 똑같지... ㅋㅋ 하지만 생성자는 하나라는 것...
이것이 Optional 기능의 Overloads 인 것이다.
그럼 이때... 떠올려 봐야할 것이 있다. parameter  중 Phone  을 사용하고 싶지 않을때는 어떻게 할 것인가 말이다.
Person person= new Person(“우”, ”정환”,  address: "서울시 서초구 서초동");
Person person= new Person(“우”, ”정환”,  phone: "01023456789");

이렇게 한다...

이것이 Named Argument 이다.

이런것쯤은 VB 개발자들은 기본적으로 알고 있는 것인데... C# 4.0 에 포함했다고 대대적으로 선전하고 있으니 우습지 않은가?

C# 이 이것밖에 안되었나? 캬캬캬

이것이 대세인 것이다.
VB 가 대세라는 것이지...

따라쟁이 C# 도 VB 처럼 생산성이 좋은 언어로 거듭태어나고 있다.

따라쟁이라고 제목은 붙였지만 따라쟁이라고 말하고 싶지는 않다.

이것이 대세이고 모든 언어들은 대세를 향해 진화하고 있을뿐...
그것이 사용자에 대한 기본적인 예의인 것인 것이리라...


행복한 고수되셔요...

반응형

'.NET > C#' 카테고리의 다른 글

[C#] How do you check if a file is in use?  (0) 2017.07.27
[C#] 단일 Process 실행  (2) 2010.11.08
[C#] C# 컴파일러 오류  (0) 2009.03.06
[C#] 요것 한번 보시죠... VB.NET 에는 없어요. ^^'  (0) 2009.03.06
[C#] Yield  (0) 2009.03.06

+ Recent posts