C\#문법 사탕(Csharp Syntactic sugar)모음

3813 단어 C#문법 사탕
1.간단 한 Property 를 통 해 우 리 는 Property
 
private string _myName;
public string MyName
{
get { return _myName; }
set { _myName = value; }
}
가 천편일률 적 으로 이렇게 성명 했다.큰 의미 가 없 었 다.그래서 C\#의 설계 자 는 이 천편일률 적 인 업 무 를 컴 파일 러 에 맡 겼 다.우 리 는 지금 이렇게 성명 할 수 있다
 
public string MyName { get; set; }
.물론 그 는 유연성 을 희생 하지 않 을 것 이다.우 리 는 get 또는 set 에 단독으로 접근 제한 부 호 를 설정 할 수 있 습 니 다.예 를 들 어
public string MyName { get; protected internal set; } 
2.두 번 의 변 이 를 거 친 의뢰 작성 법 은.net 1.1 일 때 우 리 는 방법 을 설명 한 후에 야 의뢰 에서 사용 할 수 있 습 니 다..net 2.0 이후 에 우 리 는 익명 의뢰 를 사용 할 수 있 습 니 다.그 는 쓰기 법 을 간소화 할 수 있 을 뿐만 아니 라 익명 의뢰 에서 범위 내의 변 수 를 방문 할 수 있 습 니 다.그 후에 람 다 표현 식 이 왔 으 니 쓰기 가 더욱 간편 해 졌 다.4567913)3.집합 류 의 성명 전에 우 리 는 List 를 성명 하고 list 에 초기 값 을 부여 합 니 다.반드시 이렇게 써 야 합 니 다.Listlist=new List();list.Add("a 1");list.Add("b 2");list.Add("c 3");이제 필요 없어 요.그냥 쓰 면 돼 요.Listlist=new List{"def","OK"};4.집합 클래스 의 각 항목 의 동작 은 집합 에 있 는 항목 을 하나씩 처리 하기 위해 서 이렇게 써 야 합 니 다:foreach(string item in list){Console.Write Line(item);}이제 필요 없습니다.이렇게 하면 됩 니 다.list.Foreach(a=>Console.Write Line(a));코드 가 많이 상 큼 해 졌 죠?5.using==try finally 는 사용 이 끝 났 을 때 자원 을 방출 하기 위해 서 우 리 는 항상 using 을 사용 해 야 한다.using 은 실질 적 으로 try fiannaly 의 문법 사탕 일 뿐이다.예 를 들 어 StreamWriter sw=null;try { sw = new StreamWriter("d:\abc.txt"); sw.WriteLine("test"); } finally { if(sw!= null) sw.Dispose(); } 위의 코드 는 using(var sw=new Stream Writer("d:\abc.txt"){sw.WriteLine("test")로 간략화 할 수 있 습 니 다.}6.귀여운 var var 의 의 미 는 성명 을 쓰 지 않 아 도 되 는 유형 입 니 다.컴 파 일 러 는 뒤에 있 는 var 의 할당 값 에 따라 유형 을 판단 합 니 다.var 의 유형 이 확인 되면 다시 바 꿀 수 없습니다.부분 변수 로 만 사용 할 수 있 고 필드 로 도 사용 할 수 없습니다.예 를 들 어 var writer=new StreamWriter(path);for(var i=0;i<100;i++){}7.물음표 의 낡은 물음표+가짜 var b=3;var a = b > 9?b.ToString():"0"+b; 새 아기 물음표 두 개??이것 은 왼쪽 변수 가 null 이면 오른쪽 변수 이 고 그렇지 않 으 면 왼쪽 변수 값 string a=null 임 을 나타 낸다.var b = a??""; 8.타 입 실례 화 된 문법 사탕 public class Abc{public int ID{get;set; } public string Name { get; set; } public string Url { get; set; } } 우 리 는 위의 클래스 성명 을 위해 함 수 를 만 들 지 는 않 았 지만,아래 의 형식 처럼 Public static void Main(string[]args){var abc=new Abc{ID=1,Name="jb 51",Url="http://jb51.jb51.net/" }; } 9.전설의 확장 방법 은 c\#3.5 시 확장 방법 을 도 입 했 습 니 다.우 리 는 원본 코드 를 수정 하지 않 고 클래스 에 인 스 턴 스 방법 을 추가 할 수 있 습 니 다.이것 은 매우 의미 가 있 습 니 다.그것 의 실질 도 문법 당의 실현 이다.예 를 들 어 우리 가 String 류 에 IsNumber 를 확장 하 는 방법:view sourceprint?01 public static class StringExt { static private Regex regexNumber = new Regex("\\d+"); static public bool IsNumber(this string input) { if (string.IsNullOrEmpty(input)) { return false; } return regexNumber.IsMatch(input); } } 우 리 는 String 인 스 턴 스 에서 이 방법 을 호출 할 수 있 습 니 다.var abc="123";var isNumber = abs.IsNumber(); 10.익명 류
 
class MyClass
{
public delegate void DoSomething(int a);
//
private void DoIt(int a) {
Console.WriteLine(a);
}
private void HowtoDo(DoSomething doMethod,int a) {
doMethod(a);
}
public static void Main(string[] args) {
MyClass mc = new MyClass();
//
mc.HowtoDo(new DoSomething(mc.DoIt), 10);
int x = 10;
//
mc.HowtoDo(delegate(int a){
Console.WriteLine(a + x);
},10);
// lamda
mc.HowtoDo(a=>Console.WriteLine(a+x),10);
Console.ReadLine();
}
}
익명 류 를 사용 하여 linq to sql 또는 enity framework 에서 조회 데 이 터 를 되 돌려 줄 때 좋 습 니 다.문법 사탕 이 더 있다 면 공유 해 주세요.그리고 문법 사탕 을 즐 기 시기 바 랍 니 다.왜냐하면 그 는 우리 에 게 편 의 를 줄 수 있 기 때 문 입 니 다.그것 에 대해 코 웃음 을 치지 마 세 요.코 웃음 을 칠 필요 도 없습니다.

좋은 웹페이지 즐겨찾기