개발 관련 학습정리/C#(10)
-
c# property
property는 클래스 내의 멤버 변수를 정보 은닉할때 사용된다. getter, setter를 통해 해당 변수를 읽고 쓸수 있으며 읽기 전용과 쓰기 전용으로도 만들 수 있다. C# 기본형 프로퍼티 class Class1 { private int c1; public int C1 { get { return C1; } set { C1 = value; } } } 이와 같이 c1에 직접 접근하지 않고 get set을 이용하여 접근하는 방식이다. 하지만 이러한 변수를 많이 만들게 되면 코드도 길어지고 보기 불편하기 때문에 C# 3.0 버전부터는 자동 구현 프로퍼티 기능을 제공한다. C# 자동 구현 프로퍼티 class Class1 { public int c1 { get; set; } } 이와 같이 뒤에 get se..
2021.01.12 -
[C#] overriding 오버라이딩 / 메서드 숨기기 (hold)
시험기간때문에 바뻤다가 오랜만에 c#을 공부하게 되었다. 평소에 많이 들었던 오버라이딩을 공부했다. 오버라이딩을 하기 위해서는 메소드가 virtual 로 선언해 놔야하며, 상속된 클래스에서 그 메소드를 재정의 해줍니다. 메소드를 재정의 하고 있음을 알리기 위해 override라는 키워드로 메소드를 정의해줍니다. amor라는 부모 클래스. virtual키워드 함수 initialize를 생성합니다. 그 밑에 자식 클래스 ironman과 warmachine을 생성, 안에 override initialize각각 선언후 출력을 다르게 해놓습니다. 첫번째는 amor에서 메서드를 호출시켰으므로 Armored가 뜨고, 두번째는 amor 의 ironman에다가 ironman클래스로 선언을 해서 override를 거쳐 r..
2019.04.14 -
[C#] 클래스 : 정적필드, 얕은 복사와 깊은 복사, this 키워드
1. 정적 필드 프로그램 전체에 걸쳐 공유해야 하는 변수를 사용할때 정적 필드 안에 생성하면 전체에 공유를 할 수 있다. 이와 같이 Global이라는 정적 필드에 public static int count 라는 변수를 선언하면 프로그램 전체에 공유 할 수 있습니다 변수 뿐만 아니라 메소드도 공유할 수 있으며, 정적 메소드라고 불립니다. 인스턴스가 아닌 클래스 자체에 소속되고 정적 메소드가 클래스의 인스턴스를 생성하지 않아도 호출이 가능합니다. 2. 객체 복사 (얕은 복사와 깊은 복사) 얕은 복사 바로 코드를 보도록 합시다. 먼저 객체 source 선언, source의 field1,2에 10,20을 대입합니다. target객체를 만들고 sourve를 대입 후, target field2에 30을 대입합니다...
2019.04.01 -
[C#] 클래스 : 생성자, 소멸자
1. 생성자 클래스를 선언할 때 명시적으로 생성자를 구현하지 않아도 컴파일러에서 만들어 주는 것으로, 객체의 필드를 원하는 값으로 초기화 할때 주로 쓰는 메소드입니다. 오버로딩이 가능하여, 다양한 버전의 생성자가 가능합니다. 2. 소멸자 생성자의 이름은 클래스의 이름과 같지만, 클래스의 이름에 ~를 붙인 꼴을 한 소멸자는 생성자와는 달리 매개 변수도 없고, 한정자도 사용하지 않습니다. 또한 오버로딩도 불가능하며, 호출도 불가능 합니다. 종료자는 가급적으로 구현하지 않는게 좋은데, 그 이유는 CLR의 가비지 컬렉터가 우리보다 더 똑똑하게 객체의 소멸을 담당해주고있기 때문에 뒷처리는 가비지 컬렉터에 맡기는 편이 좋습니다.
2019.03.31