среда, 16 сентября 2009 г.

Знаете ли вы...

... что несмотря на то, что в блоках case оператора switch нельзя "проваливаться" между case'ами (т.к. компилятор требует обязательного наличия оператора break для каждого блока case), сделать это все-таки можно. Вот так:

switch(attitude)
{
  case Attitude.HighAndMighty:
   Console.WriteLine("High");
   goto case Attitude.JustMighty;
  case Attitude.JustMighty:
   Console.WriteLine("Mighty");
   break;
}

Про обобщения и перегрузку функций

Вот вопрос, который мне задают довольно часто:

public class C
{
  public static void DoIt<t>(T t)
  {
    ReallyDoIt(t);
  }

  private static void ReallyDoIt(string s)
  {
    System.Console.WriteLine("строка");
  }

  private static void ReallyDoIt<t>(T t)
  {
    System.Console.WriteLine("всё остальное");
  }
}

Что происходит при вызове C.DoIt<string>? Многие люди ожидают, что выведется «строка» в то время, как на самом деле всегда печатается «всё остальное», независимо от того, какой T использовать.


Почему? Читайте в блоге Эрика Липперта.

понедельник, 14 сентября 2009 г.

Рекомендую...

... почитать вот это "Негласные истины управления гиками".

Статья рассказывает об особенностях поведения ИТ-шников, которое несколько отличается от поведения обычных людей. Основная причина - человек связанный с ИТ оценивает всё с позиции логики (что, вообщем-то, ему и необходимо из-за выбранной профессии), что приводит к интересным эффектам, когда в действиях руководства этой самой логики недостает :)

пятница, 4 сентября 2009 г.

среда, 26 августа 2009 г.

Трюки C#

Интересная статья про разные хитрости языка. В частности:


  • Операторы | и & против || и &&
  • Передача null в качестве исключения
  • Странная стрелка при перечислении
  • Полезный оператор ??
  • Методы расширения
  • Лямбды вместо строк
  • Возврат значения из try-finally
  • Креативное использование Dispose()
  • Делегат-заглушка

Кстати, последняя фишка позволит сократить код активно использующий делегаты.

P.S.: порадовала конструкция while (count --> 0). Когда дошло - долго смеялся :)