c#(26)
-
Stroke, StrokePreserve 차이점
mono에서 제공하는 gtk 씨샵 구현을 이용하여 gui를 표현할 수 있다. 이 중 stroke는 다음과 같은 설명이 나온다. A drawing operator that strokes the current path according to the current line width, line join, line cap, and dash settings. 즉 현재 설정한 선 넓이, 선 조인 형식, 선 마침 형식이나 대시 셋팅을 그려주는데주의 할 것은 현재 그리기 패스에 설정된 위 내용들이 context에서 clear 한다는 사실. StrokePreserve로 그려주면 설정들이 유지된다.
2015.07.04 -
Equals, == 연산자 재정의 참고
https://msdn.microsoft.com/ko-kr/library/ms173147(v=vs.90).aspx 우선 Equals의 일치 비교는 값 비교이며참조 일치의 비교는 ReferenceEquals임을 알고 있어야 한다. @@ MSDN____Equals의 새 구현은 Equals의 모든 규칙을 따라야 합니다.x.Equals(x)는 true를 반환합니다.x. Equals (y)와 y. Equals (x)의 반환 값은 같습니다.(x. Equals (y) && y. Equals (z))가 true를 반환하는 경우 x. Equals (z)도 true를 반환합니다.x 및 y가 참조하는 개체가 수정되지 않는 한 x. Equals (y)를 계속 호출해도 같은 값이 반환됩니다.x. Equals (null)은 fa..
2015.07.04 -
C# - unsafe와 fixed
C#에서는 기본적으로 관리되지 않는 메모리 조작은 할 수 없게 되어있는데다음과 같은 옵션을 체크하면 포인터와 같이 메모리를 조작할 수 있다. 이 옵션 없이 unsafe 지시어를 사용하면 빌드 오류가 발생한다. class Person { public string name; public int age; } static void Main(string[] args) { int i = 0; unsafe { Console.WriteLine("{0:X}", (int)&i); Person person = new Person(); // 에러 : 이미 고정된 값은 할당불가 //fixed(int* p = &i) fixed(int* p = &person.age) { Console.WriteLine(*p); SetValue(p..
2015.02.03 -
c# 5.0 - 1
호출자 정보 c++에 있는 __LINE__, __FUNCTION__과 같은 매크로 상수가 없어서 아쉬울 때가 있는데이를 대체하는 호출자 정보가 추가되었다. 다만 C# 답게 매크로가 아닌 특성과 선택적 매개변수로 구현된다. static void Main(string[] args) { LogMessage("This is test"); } static void LogMessage(string text, [CallerMemberName] string memberName = "", [CallerFilePath] string filePath = "", [CallerLineNumber] int lineNumber = 0) { Console.WriteLine("text : " + text); Console.WriteL..
2015.01.23 -
9장 - C# 4.0
dynamic static void Main(string[] args) { string txt = "test function"; List l = new List { 1, 2, 3, 4, 5}; Console.WriteLine(DuckTypingCall(txt, "test")); Console.WriteLine(DuckTypingCall(l, 3)); } public static int DuckTypingCall(dynamic target, dynamic item) { return target.IndexOf(item); } 객체지향 언어에서는 대개 강력한 타입 체계가 구성되어 있다. 따라서 위 코드 처럼 서로 연관성이 없는 타입을 같은 함수에서 호출 할 수 없다.하지만 동적 언어처럼형식이 아닌 단지 같은 ..
2015.01.16 -
8장 - C# 3.0 - 3
LINQ(Language Integrated Query) 데이터 열거 작업은 프로그래밍 작업시 빈번히 발생.이 작업을 일관되게 표현하는 문법체계. 전형적으로 컬렉션을 대상으로 쿼리 수행. public class Person { public string Name { get; set; } public int Age { get; set; } public override string ToString () { return string.Format ("{0} : {1}", Name, Age); } } public class MainLanguage { public string Name { get; set; } public string Language { get; set; } } class MainClass { pub..
2015.01.12