본문 바로가기

프로그래밍/C# 프로그래밍

Property - Get, Set C++ 에서 멤버의 은폐를 위해 Get(), Set() 하던짓을 C# 에서는 프로퍼티 제공으로 귀찮음이 덜하게 되었다. public int itemCode { get; set; } 이렇게 하면 자동으로 구현이 된다. public int itemCode { get; } 이렇게 하면 읽기 전용 여기부터는 에러사례.. public int itemCode { set; } - 에러!!이렇게 하면 쓰기 전용이 될 것 같지만, 에러를 내며 VS 님이 친절히 자동구현 속성은 접근자가 필요하다고 설명한다. 그래서public int itemCode { protected set; } - 에러!!이렇게 하면 다시 한번 접근자의 엑세스 가능 한정자는 get, set 이 모두 필요하다고 에러를 뿜어 내신다. 잘못된 사례를 더 소.. 더보기
파티셜 클래스와 파티셜 메소드 public partial class CoOrds { private int x; private int y; public CoOrds(int x, int y) { this.x = x; this.y = y; } } public partial class CoOrds { public void PrintCoOrds() { Console.WriteLine("CoOrds: {0},{1}", x, y); } } class TestCoOrds { static void Main() { CoOrds myCoOrds = new CoOrds(10, 15); myCoOrds.PrintCoOrds(); } } // Output: CoOrds: 10,15 C# 에서는 이렇게 partial 이라는 키워드를 사용하여클래스의 필드와 메소.. 더보기
IComparable, IComparer 비교정렬 int CompareTo( Object obj ) 정렬함수로써리턴값이 0보다 크면 해당 인스턴스가 정렬에서 앞으로 오고, 작으면 그 반대이다. C#에서 기본타입은 IComparable 를 상속받으며 CompareTo() 함수를 지원하고 있다. public sealed class String : IConvertible, IComparable, IEnumerable, ICloneable, IComparable, IEquatable, IEnumerable{public int CompareTo(String strB);} public struct Int32 : IFormattable, IConvertible, IComparable, IComparable, IEquatable{public Int32 CompareT.. 더보기
C#에서 typedef 사용법 예전에 c++만 코딩하다 c#에는 typedef 가 없다는걸 알고 조금 당황;물론 using 키워드를 사용하면 되긴 하지만 조금 다른점이 있다. namepace EquipItem {using costumeListType = Dictionary; public class CostumeItem {protected costumeListType list; ..}} 전방선언 되어야 하므로 이렇게 namespace로 살짝 감쏴줘야 한다. 주의해야 할점은 개방형 제네릭 형식은 사용할 수 없다.List는 되지만, List는 안된다. 더보기
암시적 타입 var 키워드 C# 3.0 에서 추가된 암시적 타입 var // i is compiled as an int var i = 5; // s is compiled as a string var s = "Hello"; // a is compiled as int[] var a = new[] { 0, 1, 2 }; // expr is compiled as IEnumerable // or perhaps IQueryable var expr = from c in customers where c.City == "London" select c; // anon is compiled as an anonymous type var anon = new { Name = "Terry", Age = 34 }; // list is compiled as L.. 더보기
Int32.Parse(), Convert.ToInt32(), Int32.TryParse() 차이 Int 형으로 컨버팅 하는 방법이 여러가지가 있는데다음과 같은 차이가 있다.http://www.codeproject.com/Articles/32885/Difference-Between-Int-Parse-Convert-ToInt-and Int32.parse(string)Hide Copy Codestring s1 = "1234"; string s2 = "1234.65"; string s3 = null; string s4 = "123456789123456789123456789123456789123456789"; int result; bool success; result = Int32.Parse(s1); //-- 1234 result = Int32.Parse(s2); //-- FormatException res.. 더보기
제너릭 클래스의 조건지정 - Where 제약 조건은 컨텍스트 키워드 where를 사용하여 지정한다. 제약 조건설명where T: struct형식 인수가 값 형식이어야 한다. int, float 등where T : class형식 인수가 참조 형식이어야 한다.. 이는 모든 클래스, 인터페이스, 대리자 또는 배열 형식에도 적용where T : new()형식 인수가 매개 변수 없는 공용 생성자를 가지고 있어야 합니다. 다른 제약 조건과 함께 사용하는 경우 new() 제약 조건은 마지막에 지정public class MyGenericClass where T : IComparable, new() { T item = new T(); }where T : 형식 인수가 지정된 기본 클래스이거나 이를 상속받은 클래스이어야 한다where T : 형식 인수가 지정된 .. 더보기
C# 튜토리얼 사이트 using System; namespace HelloWorldApplication { class HelloWorld { static void Main(string[] args) { /* my first program in C# */ Console.WriteLine("Hello World"); Console.ReadKey(); } } } 기본 데이터타입부터 자료구조등 비교적 쉬운 예제로 이루어져 있다.http://www.tutorialspoint.com/csharp/index.htm 더보기
파일 읽기 예제 using System;using System.IO;using System.Collections; namespace TextFileReader_csharp{/// /// Summary description for Class1./// class Class1{static void Main(string[] args){StreamReader objReader = new StreamReader("c:\\test.txt");string sLine="";ArrayList arrText = new ArrayList(); while (sLine != null){sLine = objReader.ReadLine();if (sLine != null)arrText.Add(sLine);} objReader.Close(); for.. 더보기
클래스와 구조체의 차이(2) - c# public class Person { public string Name { get; set; } public int Age { get; set; } public Person(string name, int age) { Name = name; Age = age; } //Other properties, methods, events... } class Program { static void Main() { Person person1 = new Person("Leopold", 6); Console.WriteLine("person1 Name = {0} Age = {1}", person1.Name, person1.Age); // Declare new person, assign person1 to it. Person.. 더보기