내가 바로 C#이다!

내가 바로 C#이다!

 


c# 포인터 사용
안전하지않은 코드 사용 (옵션 체크)
int[] arr_int = new int[] { 1, 2, 3, 4 };
int[][] arr_int_int = new int[3][]{new int[]{1,2},
 new int[]{3,4},
 new int[]{5,6}};


unsafe
{
 Console.WriteLine(“i값 변경전 {0}”, i);
 int* k = &i;
 *k = 20;
 Console.WriteLine(“i값 변경후 {0}”, i);
}


unsafe
{
 //블럭안에서 포인터 변수에 값을 초기화할때 fixed를 선언
 fixed (int* pointArr = &arr_int[0])
 {
  Console.WriteLine(“pointArr의 값: {0}”, *pointArr);
 }


 //배열은 자체가 포인터
 fixed (int* arr1 = arr_int)
 {
  Console.WriteLine(“arr1의 값: {0}”, arr1[2]);
 }


 // 2차원 배열에서 인덱스 1번행의 배열을 포인터 arr2에 할당
 fixed (int* arr2 = arr_int_int[1])
 {
  Console.WriteLine(“arr2의 값: {0}”, arr2[1]);
 }


 fixed (int* arr3 = &arr_int[2])
 {
  Console.WriteLine(“arr3의 값: {0}”, arr3[0]);
 }


 //fixed (int* arr3 = &arr_int[2]);
 //Console.WriteLine(“arr3의 값: {0}”, arr3[0]);
}


// output
// arr1의 값: 3
// arr2의 값: 4
// arr3의 값: 3



struct


atrribute 사용
[STAThread]
[Conditional(“DEBUG”)]


var
variable인지 variant 의미인지 아무튼 javascript 처럼 데이터형을 구별없이 사용 가능


ArrayList arrayList = new ArrayList { “one”, “two”, “three”, 1, 2, 3 };
foreach (var val in arrayList)
{
 Console.WriteLine(“arr 요소값을 암시적 타입인 var로 선언: {0}”, val);
}


var variant = “123”;
Console.WriteLine(“variant: {0}, {1}”, variant, variant.GetType());
variant: 123, System.String


 



Extension method
이미 존재하는 클래스에 대한 메서드를 확장
javascript에서 protype를 이용해서 확장하는 방식과 유사하다.



public static class String
{
 public static string Reverse(this string txt)
 {
  char[] reversed = txt.ToCharArray();
  Array.Reverse(reversed);


  return new string(reversed);
 }
}


string text = “dailyon”;
string reversedText = text.Reverse(); // or String.Reverse(text);
Console.WriteLine(reversedText); // “noyliad”


 



Lamda
delegate int delegate_add(int operand);
delegate_add add = (int operand) => operand + 10;


delegate string delegate_anonymous(int operand, string opcode);
delegate_anonymous da = (operand, opcode) =>
{
 Console.WriteLine(“다쉬의 아귀먼트는 ()블록 할당.”);
 return operand + opcode + 10;
};


Linq
http://msdn.microsoft.com/ko-kr/library/bb397926.aspx

int[] data = { 10, 20, 30, 35, 40, 50, 80 };
IEnumerable<int> resultSet = from i in data
     where (i >= 30 && i <= 50 || (i == 80))
     select i;
foreach (int i in resultSet)
{
 Console.WriteLine(“질의결과: {0}”, i);
}
Console.WriteLine();



delegate


int? a = null;


a ??

Leave a Reply

Your email address will not be published. Required fields are marked *