Search
Duplicate

뇌를 자극하는 C# 4.0 프로그래밍/ 프로퍼티

메소드보다 프로퍼티

class MyClass { private int myField; public int MyField { get { return myField; } set { myField = value; } } }
C#
자바와 달리 C#에서는 프로퍼티라는 우아한 방법을 장치를 통해 필드의 은닉성을 보장한다.

자동 구현 프로퍼티

public class NameCard { public string Name { get; set; } public string Number { get; set; } public string Date { get; private set; } // 이렇게 쓰면 읽기는 public, 쓰기는 private가 적용된다. }
C#
일반적인 프로퍼티도 우아하지만 매번 필드와 프로퍼티를 따로 작성하는 것이 번거롭기 때문에 C# 3.0부터는 아예 자동구현 프로퍼티라고 해서 위와 같이 코드를 작성해도 프로퍼티로 인식해주고 있다.

프로퍼티와 생성자

public class BirthdayInfo { public string Name { get; set; } public DateTime Birthday { get; set; } public int Age { get; set; } } BirthdayInfo birth = new BirthdayInfo() { Name = "수영", // 콤마(,)를 이용한다. Birthday = new DateTime(1982, 4, 16) };
C#
객체를 생성할 때 프로퍼티를 이용해서 초기화 할 수도 있다.
초기화 할 때는 객체의 모든 프로퍼티를 초기화할 필요가 없기 때문에 생성자를 작성할 때와 달리 어떤 필드를 초기화 할 지 고민할 필요가 없다.

무명 형식

// 중괄호 사이에 임임의 프로퍼티 이름을 적고 값을 할당하면 그대로 새 형식의 프로퍼티가 된다. var myInstance = new { Name = "박수영", Age = "34" }; // 이렇게 선언된 무명 형식의 인스턴스는 여느 객체처럼 프로퍼티에 접근하여 사용할 수 있다. Console.WriteLine(myInstance.Name, myInstance.Age);
C#
무명 형식은 형식의 선언과 동시에 인스턴스를 할당한다. 이 때문에 인스턴스를 만들고 다시는 사용하지 않을 때 요긴하다.
무명 형식의 프로퍼티에 할당된 값은 변경이 불가능하다. 인스턴스가 만들 때 값을 넣은 후에는 읽기만 가능하다는 이야기
무명 형식은 LINQ와 함께 사용하면 매우 요긴하다.

인터페이스의 프로퍼티

interface IProduct { string ProductName { get; set; } }
C#
인터페이스에 들어가는 프로퍼티는 구현을 갖지 않기 떄문에 자동 구현 프로퍼티 선언과 모습이 같다.

추상 클래스와 프로퍼티

abstract class Product { abstract public DateTime ProductDate { get; set; } }
C#
추상 클래스는 그 특성상 구현된 프로퍼티와 구현되지 않은 프로퍼티를 모두 가질 수 있다. 추상 클래스에서 구현되지 않은 프로퍼티를 만들 때는 abstract 한정자를 붙여서 만들면 된다.