.NET/C#

[C#] C# 은 VB.NET 따라쟁이...

WooGong Peter 2009. 5. 7. 17:08

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 처럼 생산성이 좋은 언어로 거듭태어나고 있다.

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

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


행복한 고수되셔요...

반응형