C# Programming Language

C# Programming Language

Недавно завершил первую итерацию изучения данной книги написанной легендой программирования – Андерсом Хейлбергом, архитектором C#, Delphi и Turbo Pascal, совместно с другими специалистами, входившими в группу разработчиков C# компании Microsoft.

Что можно найти в этом невероятном издании? =)

  1. Новые особенности C# 4.0
  2. Обширные комментарии в каждой главе, написанные гуру программирования  такими как Джон Скит, Джозеф Альбахари, Билл Вагнер, Кристиан Нейгел, Эрик Липперт и другими.
  3. Полную информацию о C#
В комментариях есть много различных советов, которые могут быть полезны.
Книга большая, советов много =) 

Вот только некоторые из них:

1. Отрицательный 0

Чтобы обнаружить отрицательный 0, нужно использовать странноватый код, подобный приведенному ниже, который работает, поскольку
1 / (-0.0) = -Infinity < 0

public static string DoubleToString(double d)
{
    if (d == 0.0 && 1 / d < 0)
        return "-0.0";

    return d.ToString();
}

2. Tuple
Для возврата из функции множества значений вместо использования входных параметров можно использовать кортежный тип (tuple type). Этот тип появился в .NET 4.

3. Locality of reference
Данный принцип делает программу более удобной для чтения и понимания.

4. Операция объединения с 0: ??
Операцию ?? удобно использовать для установки значений по умолчанию для ссылочных типов или для обнуляемых типов-значений.

5. RuntimeWrappedException
В текущей реализации языка C# и CLR Microsoft созданное исключение, не унаследованное от System.Exception, преобразуется к объекту RuntimeWrappedException. И как следствие этого, блок ctach(Exception e) перехватывает все исключения.

Если все-таки есть необходимость обеспечить семантику C# 1.0, где исключения, не относящиеся к Exception, таким способом не перехватывались, используйте следующий атрибут сборки:
[assembly:System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows = false)]

Книжка классная. Читаем, читаем ;)

Comments

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>