본문 바로가기

C#8

C# Delegate ≒ C 함수 포인터 ?!? Delegate라는 개념은 C#을 하면서 처음 들어 봄. C언어의 함수 포인터를 C#에서 구현한것이라고 생각하면 된다라는 설명을 들었음(정확한 설명인지는 잘 모르겠음), C언어에서 배운 함수 포인터에 대해서 기억을 하지도 못하고 있었고, 사용 방법에 대해서도 기억을 못했기에 단박에 이해 할 수 없었지만 함수 포인터와 Delegate를 검색해보니 비슷한 개념인 것 같은 느낌이 든다. - C 함수 포인터 C를 배울때 머릴 아프게 했던 포인터에 대한 개념을 알고 있어야 함(사실 지금도 안다고 자신할 수 없음...) 포인터는 특정 변수에 메모리주소를 담는것인데, 함수 포인터는 특정 함수에 대한 메모리 주소를 담는 것. 함수 포인터를 쓰는 이유는 아래 참조 사이트에 들어가면 더 자세한 설명이 있음(정리가 정말 잘.. 2017. 2. 1.
AS를 이용한 안전한 캐스팅 캐스팅을 하기 위해 흔히 아래와 같이 변수 앞에 괄호을 열고닫으면서 캐스트할 형식을 넣어 캐스팅하곤 함. (캐스팅할 Type)Object 위와 같은 경으 InvalidCastException이 발생할 수 있음. 예외를 Throw시키지 않기 위해서 사용하는 연산자가 as와 is임. as의 경우 실제로 캐스트 값을 반환하며, is의 경우 성공 여부를 bool값으로 반환함. as와 is는 아래와 같이 사용 가능함 결과를 담을 변수(bool / type) = obejct is/as 캐스팅할 Type; 2017. 1. 20.
C# DataGridView 사이즈에 맞는 Grid T생성하기 C# Winform으로 개발하는 과정에서 Grid를 뿌려줘야 하는 경우가 있다. DataGridView를 이용하여 WindowForm에 뿌려줘야하는데 DataGridView의 보다 데이터가 적은 Grid를 뿌리게되면 내가 잡은 DataGridView의 여백(background)가 노출되거나 데이터가 많은 Grid를 뿌리게되면 Scroll Bar가 생성이되어 넘쳐난다. 따라서 Grid를 불러왔을떄 Grid의 크기와 상관없이 현재 DataGridView의 크기에 알맞게 Size를 맞추어주기 위해서는 아래와 같이 Grid를 설정해주면 된다. (DataGridView를 가득채우기위해서 옵션은 Fill로 해줌. grid객체.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsM.. 2016. 10. 12.
C#에서 NaN처리 NaN이란 Not a Number의 줄임말으로서 (예를 들어 0/0 연산의 결과값) Double, Float의 값으로 NaN이 들어왔을경우 이를 처리하기위해 == null 과 같은 방법으로 처리할 수 없음. 따라서 다음과 같은 방법으로 비교를 해주어야 함 double.IsNaN(변수) float.IsNaN(변수) (IsNaN함수가 변수가 NaN일 경우 True를 리턴함) 혹은 아래와 같은 방법도 있음 변수.equals(double.NaN) 변수.equals(float.NaN) 2016. 10. 12.