Недавно купил себе книгу Джеффри Рихтера CLR via C#. Программирование на платформе Microsoft.NET Framework 2.0 на языке C#. Начал читать с самого начала несмотря на то что там объясняются базовые принципы .NET Framework/CLR/C# с которыми я уже знаком. Решил таким образом освежить знания. По ходу чтения наткнулся на пару новых моментов, которыми и хочу поделиться.
- В C# можно делать структуры с перекрывающимеся полями. В С++ это известно как union.
[StructLayout(LayoutKind.Explicit, Size=4)]
public struct Int32Union
{
[FieldOffset(0)]public byte Byte1;
[FieldOffset(1)]public byte Byte2;
[FieldOffset(2)]public byte Byte3;
[FieldOffset(3)]public byte Byte4;
[FieldOffset(0)]public int intValue;
}
-
Если у вас есть сборка с internal классами и требуется предоставить другой своей сборке доступ к ним (а объединить эти сборку в одну нельзя по тем или иным причинам), то вас спасет атрибут InternalsVisibleTo
- Для проверки хватит ли программе памяти для выполнения, можно использовать класс MemoryFailPoint. Он проверит можно ли выделить необходимый объем памяти в мегабайтах без возбуждения исключения OutOfMemoryException. Вместо него используется InsufficientMemoryException.
Несколько замечаний о самой книге. Радует то что книга в красивом твердом переплете. Однако растроил уровень перевода и рецензирования. Как видно над книгой работал коллектив переводчиков и поэтому некоторые термины переводятся в начале и конце книги по разному. Например, термин working set в начале книги переводится как "рабочее множество", а в конце как "рабочий набор". Последний перевод я считаю более правильным и к тому же он уже устоялся.