new 한정자 부모 클래스를 상속한 자식 클래스에서, 부모 클래스에 존재하는 변수명/함수명과 같은 변수/함수를 선언하고 외부가 아닌 자식 인스턴스 내부에서 그 변수/함수를 호출할 때, 부모 쪽이 아닌 자식 쪽의 멤버에 접근하도록 해주는 한정자. new 한정자를 붙여주지 않아도 자식의 멤버부터 확인을 하므로 문제는 없지만, 컴파일러 경고가 발생한다. override 키워드와 함께 사용할 수 없다. class Parent { public int num = 100; public virtual void Func() { Console.WriteLine("부모 Func 호출 - num : {0}", num); } } class Child : Parent { new public int num = 10; new pub..
Property accessor(접근자) mutator(설정자)를 대체할 수 있는 특수한 메소드. class Person { private int age; // private (데이터 타입) (변수 명) 형태로 변수 선언 public int Age // public (데이터 타입) (메소드 이름) 형태로 메소드 선언 { get { return age; // Age 메소드를 통해 가져올 private 멤버를 반환 } set { age = value; // Age 메소드를 통해 값을 저장할 private 멤버에 value를 세팅 } } } 자동 구현 프로퍼티 private 속성의 필드를 프로퍼티와 동시에 생성해서, 따로 생성해주고 연결해 주는 불편함을 줄여 주는 프로퍼티. 위의 일반 프로퍼티처럼 변수 선언 ..
as Keyword 타입 캐스팅 시 성공하면 캐스팅 된 값을 반환하고 실패하면 null 값을 반환 as를 사용할 때는 null을 받을 수 있는 타입을 사용해야 한다. class Weapon { } class Player { public void Attack(object weapon) { Weapon myWeapon = weapon as Weapon; } } class Program { static void Main(string[] args) { Player p = new Player(); Weapon sword = new Weapon(); p.Attack(sword); } } is Keyword as Keyword가 캐스팅 된 값을 반환한다면 is Keyword는 캐스팅 가능 여부를 bool 값으로 반환..
nullable 데이터 타입 일반적인 데이터 타입은 어떤 값이든지 꼭 가지고 있어야 하지만 변수 자체가 null 값을 가질 수 있어야 하는 경우가 있는데 이럴 때 사용할 수 있는 데이터 타입이다. 변수 선언 시 데이터 타입 뒤에 ?를 붙여 주기만 하면 null 값을 저장할 수 있게 된다. ex) int? num = null; var Keyword C++ 11의 auto Keyword처럼 C#에도 데이터 타입을 자동으로 지정해주는 var 이라는 키워드가 있다. var num = 10; // 변수 선언 시 데이터 타입이 들어갈 위치에 사용해 주면 된다. 아래 코드처럼 nullable 과는 동시 사용이 불가능하다. var? num = 10; (x) var? num = null; (x)
C#에서의 참조 C#에서는 형식 안전성과 보안을 유지하기 위해 기본적으로 포인터 산술 연산을 지원하지 않습니다. 그러나 unsafe 키워드를 사용하면 포인터를 사용할 수 있는 안전하지 않은 컨텍스트를 정의할 수 있습니다. 포인터에 대한 자세한 내용은 포인터 형식 항목을 참조하십시오 - MSDN C#에서는 포인터를 통해 데이터를 참조하는 것을 권장하지 않는다. 그래서 참조에 의한 호출을 하려면 ref 키워드를 사용해야 한다. public void Func(ref int a, ref int b) { // 함수의 내부에서 값을 복사해서 사용하는 게 아닌 // 참조해서 사용하는 경우 // 함수의 정의, 호출 시에 ref 키워드를 붙여주면 된다. } 출력을 위한 매개 변수 out 참조에 의한 호출을 위해서 ref..
auto 키워드 데이터 타입을 자동으로 지정해주는 키워드. 변수 선언과 동시에 초기화를 해 주어야 함. int num1; auto num2 = num1; // num2가 int 타입으로 선언 포인터로 초기화를 하는 경우 자동으로 포인터변수로 선언되지만 int* pNum1 = &num1; auto pNum2 = &num2; // pNum2가 int* 타입으로 선언 레퍼런스 변수로 선언하고 싶은 경우 auto뒤에 &를 추가해 주어야 함. auto& ref1 = num1; 다음과 같이 선언할 경우, ref2는 int 타입으로 선언되어 num2의 값이 복사됨. auto ref2 = num2; STL의 iterator 선언 시에도 동일하게 사용할 수 있음.
3D 렌더링 파이프라인이란 가상의 3차원 공간에 있는 데이터를 화면에 출력할 수 있는 2차원 데이터로 변환하는 과정 - 로컬 좌표계 : 3D 오브젝트를 모델링 할 때 사용되는 좌표계. 원점을 기준으로 각 정점들의 좌표가 저장되어 있는 좌표계. - 월드 좌표계 : 가상의 3차원 공간을 나타내는 좌표계. 3D 오브젝트의 로컬 좌표에 (크기 변환, 회전, 이동 매트릭스를 곱한)월드 매트릭스를 곱해서 가상의 3차원 공간 상에 배치. 월드 매트릭스는 Scale, Rotation, Translation 매트릭스의 곱으로 이루어지고, 행렬 곱셈은 일반적으로 교환법칙이 성립하지 않으므로 곱하는 순서에 따라 다른 결과를 만들어 낼 수 있음. 아무런 변환 처리를 하고 싶지 않은 경우, 월드 매트릭스로 단위 행렬을 지정해 ..