IT Books(26)
-
WinForm
윈폼 public partial class Form1 : Form { public Form1() { InitializeComponent(); } protected override void OnShown(EventArgs e) { base.OnShown(e); Color color = Color.FromArgb(0xff, 0x0f, 0xf0, 0x10); using (Brush brush = new SolidBrush(color)) using (Graphics g = this.CreateGraphics()) { //using (Pen bluePen = new Pen(Brushes.Blue, 10)) using (Pen bluePen = new Pen(brush)) { g.DrawLine(bluePen, 0..
2015.01.26 -
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 -
8장 - c# 3.0 - 2
확장 메서드 기존 클래스를 확장하면 방법.상속이 많이 쓰이지만 sealed로 봉인된 클래스이거나클래스를 상속받아 확장하면 기존 소스를 상속받은 클래스는 새로운 이름으로 바뀌어야 한다. 이런 방식이 싫다면 확장 메서드를 쓰면 된다.기존 클래스의 내부 구조를 전혀 바꾸지 않고 새 인스턴스 메서드를 추가할 수 있다. static class ExtensionMethodSample { // 확장 메서드는 반드시 static이어야 하고 // 확장하려는 타입의 매개변수를 this 예약어와 함께 명시 public static int GetWordCount(this string txt) { return txt.Split(' ').Length; } } namespace Extension { class Program { s..
2015.01.10 -
8장 - C# 3.0 - 1
var 예약어 C# 컴파일러는 빌드 시점에 var키워드가 있는 자리를 타입 추론에 의해 실제 타입으로 치환해 준다.좀 더 정확히는 컴파일 시에 변수의 형식이 고정된다는 것을 기억하고 쓰자. 자동 구현 속성 public string Name { get; set; }이런 코드가 있다면 C# 컴파일러는 빌드 시에 자동으로 다음과 같이 확장ㅇ하여 컴파일한다.private string... (Name 속성에 대응되는 고유식별자]public string Name{ ...} 또 하나의 특징이라면 get / set에 다른 접근 제한자를 지정할 수 있다.{ get; protected set; } 생성자를 이용한 상태 변수 초기화 public class Person { public string Name { get; set..
2015.01.06