Microsoft User Group Винница feedback Интересно о C#: возможности, которые мы редко используем - Alex Krakovetskiy blog - Microsoft User Group Винница

 

Интересно о C#: возможности, которые мы редко используем

Мне нравится, что данная рубрика находит своего читателя. Также мне нравится, что вы критикуете материал, указываете на ошибки и тем самым заставляете заново переосмысливать написанное. Значит, мы на правильном пути.

Сегодня поговорим о тех возможностях языка, которые мы используем редко или вообще о них не догадываемся, но они есть (с). Это материал из C# basics, но тем не менее, будет полезен каждому, кто программирует на C#.

switch

Кроме привычного break для выхода из switch можно также использовать return, throw и даже goto:

switch(value)
{
case 0:
//do something
break;
case 1:
//do something
return;
case 2:
//do something
throw new ArgumentException();
case 3:
//do something
goto case 0;
default:
break;
}

Class для имени класса

Известно, что вы не можете называть переменные именами зарезервированных слов, например class или delegate. Но на самом деле это возможно - для этого необходимо перед названием добавить символ "@":

class @class 
{
public string @delegate { get; set; }
}

А потом написать в коде:

@class c = new @class();
c.@delegate = "some cool value";

Сделано это потому, что в разных .NET языках присутствуют разные зарезервированных слова, поэтому такая возможность добавлена для нормального вызова кода написанного, например на C# из VB.NET проектов, и наоборот.

Ключевые слова checked и unchecked

Выражение или блок, помеченный как checked будет проверять контекст, соответственно unchecked будет его игнорировать.

Следующий пример выдаст OverflowException:

short x = short.MaxValue;
short y = short.MaxValue;

short z = checked((short)(x + y));

А этот вернет -2:

short x = short.MaxValue;
short y = short.MaxValue;

short z = unchecked((short)(x + y));

Значения по умолчанию и default

Не смотря на то, что значения по умолчанию запомнить достаточно легко (для численных типов - 0, ссылочных - null, для bool - false), C# имеет возможность задать это значение с помощью default:

int i = default(int); // 0
bool b = default(bool); // false
DateTime t = default(DateTime); // 01.01.0001 0:00:00

Как часто вы используете вышеперечисленные возможности?


Поділитись


Related Posts with Thumbnails Posted мар 01 2010, 03:41 by Краковецкий А. View 2 241 8

Comments

Ivan on 03-01-2010 4:55

если редко используем, значит редко нужны =)

Max on 03-01-2010 5:44

default постоянно используем.

vsa on 03-01-2010 7:49

ochen chasto vse, krome @class

Bobasoft on 03-01-2010 10:03

default часто используется в generic классах... (ну покрайней мере за последнее время только там использовал)..

а вот фишку с собачкой тож никогда)))) имхо эт не красиво... но юзфул)))

Евгений Жарков on 03-01-2010 11:38

А еще у swithc можно использовать для выхода Application.Exit() :D

Dmitri on 03-02-2010 7:40

Напомнило мне вот этот (популярный) пост:

habrahabr.ru/.../67991

Karasb on 03-07-2010 13:03

Использую довольно часто только конструкции в switch. Про Goto знаю, но нас всегда учили, что использование этой конструкции  - плохой тон в программировании. Аналогично считаю и про @class

Евгений on 03-14-2010 6:59

"Выражение или блок, помеченный как checked будет проверять контекст, соответственно unchecked будет его игнорировать."

Неплохо было бы вкратце описать, что такое контекст в данном случае для тех, кто не знаком с этим понятием. Я вот, например, не знаком, и код в примере у меня ассоциируется только со словом "переполнение", а не "контекст".

Add a Comment

(required)  
(optional)
(required)  
Remember Me?
Please add 4 and 7 and type the answer here:

Enter captcha:

Информация

О нас
Timeline
Спонсоры
Поддержать

Разделы

Блоги
Медиа
Форумы
Вики
Презентации

Работа

Вакансии
Компании

Проекты

TechPosters
Data Mining SDK
Численные методы на C#
iPhoner
Data Extracting SDK

Контакты

msugvn@gmail.com
krakovetsky.alex
@msugvnua
ВКонтакте
LinkedIn
Facebook
INETA

Разработка логотипа: Helen

Статистика

Powered by Community Server (Non-Commercial Edition), by Telligent Systems