목록분류 전체보기 (253)
bdfgdfg
일반화(제네릭)이란 데이터 형식에 의존되지 않은 것을 의미한다. -> C++의 템플릿과 유사하다. 예로들어 단순하게 static함수에서 배열의 요소를 복사하는 함수 하나를 만들었다고 보자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 class Program { static void CopyArray(int[] source, int[] target) { for (int push = 0; push
C#에서도 연산자 오버로딩이 존재한다. 1 2 3 4 5 6 7 8 9 10 11 12 class MyClass { public int Test { get; set; } = 10; public static MyClass operator +(MyClass lhs, MyClass rhs) { MyClass res = new MyClass(); res.Test = lhs.Test + rhs.Test; return res; } } Colored by Color Scripter cs 다만 C++과는 달리 C#에서는 []연산자는 오버로딩이 불가능하다. 그렇기에 따로 인덱서라는것을 제공한다. 인덱서는 [] 인덱스 연산자를 이용해서 객체의 데이터에 접근을 하는 프로퍼티 예로들어서, 가변배열을 제공하기 위해 C++의 v..
클래스의 멤버 변수를 public으로 열어놓는 것은 지양해야 한다. -> 객체지향의 은닉성/캡슐화를 지키기 위해. 위와 같은 이유로. C++에서는 해당 객체의 멤버를 가지고 오기 위해 멤버 함수로 Get~과 같은 함수를 통해 해당 변수를 가져오거나, 객체의 멤버 변수를 수정하기 위해서는 Set~과 같은 함수를 통해 수정했다. C#에서는 위와 같이 번거롭게 Get, Set함수를 따로 만들지 않더라도, 이 프로퍼티를 이용하면 간단하게 해결 가능하다. (매우 편리) 프로퍼티의 사용방법은 다음과 같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class 클래스명 { 데이터타입 필드명; 접근지정자 데이터형식 프로퍼티명 { get { return 필드명; } set { 필드명 = value;..
C++에서는 존재하지 않는 인터페이스가 C#에는 존재한다. -> 문법적으로 따로 존재하지 않을 뿐, 똑같이 사용하는 방법은 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 class IFlyable { virtual void Fly() abstract; // 추상클래스를 만든다. 인터페이스와 같은 역할은 }; class Orc { }; // 다중상속이 가능하기에 위와 같이 사용가능. class FlyOrc : public Orc, public IFlyable { void Fly() override; }; Colored by Color Scripter cs (C++로 작성된 코드) 위와 같이 인터페이스는 이러한 기능이 필요하니 너는 꼭 그 기능을 구현해!라는 느낌이면 추상클래스는 공통된 ..