Прежде всего, я должен заявить, что слово «синтаксический сахар» ни в коем случае не является уничижительным термином. Оно может принести мне удобство. Это также удобный способ написания. повысить эффективность разработки и кодирования с точки зрения производительности. Это вызывает зависть у Java-разработчиков, ха-ха.
1. Упрощенное свойство
Ранее мы объявили свойство следующим образом
просмотреть исходный отпечаток?01 частная строка _myName;
02
03 общедоступная строка MyName
04
05 {
06
07 получить {вернуться _myName};
08
09 набор {_myName = значение};
10
11 }
Делать такой типовой оператор не имеет особого смысла, поэтому разработчики C# передали эту типовую работу компилятору, чтобы он сделал это за нас. Теперь мы можем объявить это следующим образом.
просмотреть исходный текст? 1 общественная строка MyName {get;
Конечно, это не пожертвует гибкостью. Мы можем, например, установить ограничения доступа для get или set отдельно.
просмотреть исходный отпечаток? 1 общественная строка MyName {получить защищенный внутренний набор;
2. Способ написания комиссии после двух изменений
В .net 1.1 нам приходилось объявлять метод перед его использованием в делегате. После .net 2.0 мы можем использовать анонимные делегаты, что не только упрощает написание, но и позволяет позже получать доступ к переменным внутри области видимости в анонимных делегатах; , Ram Теперь, когда выражения доступны, писать становится проще.
просмотреть исходный код?01 класс MyClass
02 {
03 публичный делегат void DoSomething(int a);
04
05 //Определение делегирования метода
06 частная пустота DoIt(int a) {
07 Console.WriteLine(a);
08 }
09
10 Private void HowtoDo(DoSomething doMethod,int a) {
11 доМетод(а);
12}
13
14 public static void Main(string[] args) {
15 MyClass MC = новый MyClass();
16 //Вызов определенного делегата метода
17 mc.HowtoDo(new DoSomething(mc.DoIt), 10);
18 интервал х = 10;
19 //Используйте анонимное делегирование
20 mc.HowtoDo(делегат(int a){
21 Console.WriteLine(a + x);
22},10);
двадцать три
24 //Используем лямбда-выражение
25 mc.HowtoDo(a=>Console.WriteLine(a+x),10);
26
27 Консоль.ReadLine();
28 }
29 }
3. Объявление класса коллекции
Прежде чем мы объявили список и присвоили ему начальное значение, нам пришлось написать следующее:
просмотреть исходный текст?1 List<string> list = new List<string>();
2 list.Add("a一");
3 list.Add("b二");
4 list.Add("c三");
Сейчас нет необходимости, просто напиши это.
просмотреть исходный отпечаток?1 List<string> list = new List<string> {
2 «защита», «ОК»
3};
4. Операции над каждым элементом класса коллекции
Чтобы обрабатывать элементы коллекции один за другим, нам нужно написать так:
просмотреть sourceprint?1 foreach (строковый элемент в списке)
2 {
3 Console.WriteLine(элемент);
4}
Сейчас в этом нет необходимости, все в порядке.
просмотреть исходный отпечаток? 1 list.ForEach(a => Console.WriteLine(a));
Код стал намного чище.
5. используя == попробуйте наконец
Чтобы освободить ресурсы по завершении их использования, мы часто используем using — это, по сути, просто синтаксический сахар для фианнали. Например
просмотреть исходный текст? 1 StreamWriter sw = null;
2 попробовать
3 {
4 sw = новый StreamWriter("d:abc.txt");
5 sw.WriteLine("тест");
6}
7 наконец {
8 if(sw!= null) sw.Dispose();
9}
Приведенный выше код можно упростить до:
просмотреть исходный отпечаток? 1, используя (var sw = new StreamWriter("d:abc.txt")) {
2 sw.WriteLine("тест");
3}
6. милый вар
Нет необходимости записывать объявленный тип для значения var. Компилятор определит его тип на основе последующего присвоения var. После подтверждения типа var его нельзя изменить. Его можно использовать только как локальный. переменная и не может использоваться в качестве поля. Сделайте объявления параметров.
Например:
просмотреть исходный текст? 1 вар писатель = новый StreamWriter (путь);
просмотреть исходный текст?1 for(var i=0;i<100;i++){}
7. Эволюция вопросительных знаков
Старый вопросительный знак + двоеточие
просмотреть исходный текст? 1 var b = 3;
2 var a = b > 9?b.ToString():”0”+b;
У новорожденного есть два вопросительных знака ??, что означает, что если переменная слева равна нулю, значением является переменная справа, в противном случае это значение переменной слева.
просмотреть исходный отпечаток? 1 строка a = null;
2 вар b = а??"";
8. Синтаксический сахар для создания экземпляров типов
просмотреть исходный код? 1 общедоступный класс Abc
2 {
3 общедоступный идентификатор int {get;
4
5 имя общедоступной строки {get;
6
7 публичная строка URL {get;
8}
Мы не объявляли конструктор для вышеуказанного класса, но мы можем создать его экземпляр следующим образом:
просмотреть исходный код? 1 public static void Main(string[] args) {
2 вар abc = новый Abc{
3ID=1,
4 Имя="юкайчжао",
5 URL=" http://yukaizhao.cnblogs.com/ "
6};
7}
9. легендарные методы расширения
Методы расширения были представлены в C# 3.5. Мы можем добавлять методы экземпляра в класс, не изменяя исходный код класса. Это очень важно. Его суть также заключается в реализации синтаксического сахара.
Например, мы расширяем класс String методом IsNumber:
просмотреть исходный текст?01 public static class StringExt {
02 статическое частное регулярное выражение regexNumber = новое Regex(" \d +");
03 static public bool IsNumber (ввод этой строки)
04 {
05 если (строка.IsNullOrEmpty(вход))
06 {
07 вернуть ложь;
08 }
09 вернуть regexNumber.IsMatch(вход);
10}
11 }
Мы можем вызвать этот метод в экземпляре String.
просмотреть исходный текст?1 var abc = «123»;
2 вар isNumber = abs.IsNumber();
10. Используйте анонимные классы
просмотреть исходный отпечаток?1 var a = new {
2 ID = 1,Name="yukaizhao",BlogUrl="http://www.cnblogs.com/yukaizhao/"
3};
Анонимные классы полезны при возврате данных запроса из linq в sql или в структуру сущностей.
Если у вас есть больше синтаксического сахара, поделитесь, пожалуйста. В то же время я надеюсь, что всем понравится синтаксический сахар, потому что он может принести нам удобство. Пожалуйста, не насмехайтесь над ним, и нет необходимости насмехаться над ним.
http://www.cnblogs.com/yukaizhao/archive/2010/05/25/csharp-Syntactic-sugar.html