본문 바로가기

컴퓨터28

[C#] base (super) base this 예약어가 클래스 인스턴스 자체를 가리키는것과 달리 base 예약어는 부모 클래스를 명시적으로 가리킨다. 다른 언어에서 super와 같다고 보면 된다. base는 상속받을 때 생성자에 인한 오류가 생길때 쓰일 수 있다. class Book { decimal isbn13; public Book(decimal isbn13) { this.isbn13 = isbn13; } } class EBook : Book { public EBook() // 에러 발생 { } } Book을 상속받아 EBook을 생성할때 Book도 생성되는데 이미 Book에 인자 1개를 받는 생성자가 있으므로 디폴트 생성자가 생성되지 않기 때문에 생성될 때 isbn13을 초기화 시켜주는 Book클래스를 생성할 수 없으므로 컴파.. 2020. 6. 2.
[C#] this this 지금까지 클래스 내부에서 멤버에 접근했을때 this를 생략하고 쓰고 있었다고 봐도 무방하다. 이런 경우엔 this를 써봤자 코드만 늘어날 뿐 써야할 이유가 없다. 생성자를 여러개 오버로딩 할 경우 모든 변수값을 받는 하나의 생성자를 만들어두고 this를 쓰면 중복코드를 상당히 줄일수 있다. 주의 해야될게 this는 new로 할당된 내부 객체를 가리키는 내부 식별자 이므로 정적멤버는 this 예약어를 사용할 수 없다. 예제) 여러개의 생성자 오버로딩 코드 줄이기 class Car { int iSpeed; // 속도 string sColor; // 색상 string sName; // 이름 string sVender; // 제조사 public Car() : this(0, "화이트", "미정", "미정.. 2020. 6. 2.
[C#] Array 타입 Array 소스코드에 정의되는 배열은 모드 Array 타입을 상속받는다. Array타입의 메서드는 알아두면 유용하다. 멤버 타입 설명 Rank 인스턴스 프로퍼티 배열 인스턴스 차원 수를 반환 Length 인스턴스 프로퍼티 배열 인스턴스 요소 소를 반환 Sort 정적 메서드 배열 요소의 값을 순서대로 정렬(오름) GetValue 인스턴스 메서드 지정된 인덱스의 배열 요소 값 반환 Copy 정적 메서드 배열의 내용을 다른 배열에 복사 예제) private static void OutputArrayInfo(Array arr) { Console.WriteLine("배열의 차원 수: " + arr.Rank); // Rank 프로퍼티 Console.WriteLine("배열의 요소 수: " + arr.Length);.. 2020. 6. 2.
[C#] Object 타입 System.Object C#에 존재하는 모든 클래스들은 상속받는다고 쓰지 않아도 Object 타입에 상속을 받고 있다. 모든 타입의 조상. 모든 값타입(int, double 등등) 참조 형식(enum, struct) 등이 Object 클래스를 상속 받는다. 이 Object 타입은 4개의 메서드를 가지고 있다. ToString, GetType, Equals, GetHashCode 가 4가지 메서드이다. 예제) C가 B를 상속받고 B가 A를 상속받을때 각각 객체 참조변수가 가리킬 수 있는 객체의 개수 class A { } class B : A { } class C : B { } class Program { static void Main(string[] args) { A aObj = new A(); B bO.. 2020. 6. 2.