Programming/C# (vs Java) 16

자동 구현 프로퍼티 / value 키워드

getter, setter 를 단순화 해주는 기능으로 C# 3.0 이상 부터 지원 class C { private int field; public int getField() { return field; } public void setField(int field) { this.field = field; }} 위의 코드를 아래와 같이 간략하게 나타낼 수 있다. class C { private int field; public int Field { get { return field; } set { field = value; } }} value 는 미리 정의된 키워드이다! 이러한 프로퍼티는 interface, abstract class 에도 동일하게 적용된다.

partial / struct

partial : class 내용 단순 분할 (컴파일시 합쳐짐)partial class ClassA { public void a() {} }partial class ClassA { public void b() {} } struct: c 와는 달리 메서드를 갖는 등 class 와 비슷하나, 아래와 같은 차이가 있다.1. 은닉성 보다 데이터의 자료 구조 자체로서 사용하기에 접근자를 주로 public 으로 사용한다.2. 가장 큰 차이점은 new 연산 없이 선언만으로 생성3. 대입시 deep copy4. 생성자는 반드시 매개변수가 잇어야 함5. System.ValueType 으로 부터 직접 상속된 형태

virtual, override, base

override 는 virtual 로 정의된 메서드만 재정의 가능virtual 로 정의하더라도 override 가 없으면 new 생성자 뒤의 타입의 메서드가 호출됨.new 로 정의하면 기존 메서드를 감춤. 단, base class 형에 derived class 로 생성하더라도 base class 의 메서드가 호출됨C# 에서는 base 로 super class 를 참조함 (Java 에서의 super) class ClassA { public void run() { Console.WriteLine("ClassA"); } } class ClassB : ClassA { public void run() { Console.WriteLine("ClassB"); } } class ClassC { public virtua..