.Net, Вопросы №2

Первую часть вопросов можно найти здесь.

Давай продолжим: 1) Как вы знаете, System.Array не реализует IEnumerable. , ICollection , IList , где T — тип массива (кстати, почему?).

Однако при использовании таких массивов вы можете использовать все, что предоставляют эти интерфейсы (если массив содержит только элементы ссылочного типа).

Как это произошло? 2) Вы запустили следующий код:

Console.WriteLine(a.GetType()) ;

и получил результат

SomeNamespace.SomeType[*];

Что это за парень? 3) Какой код будет работать быстрее и почему? А

.

Int32[] a = new Int32[100]; int len = a.Length; for(Int32 index = 0; index < len; index++) { //operations with a[index]; } .



или Б

.

Int32[] a = new Int32[100]; for(Int32 index = 0; index < a.Length; index++) { //operations with a[index]; } .



4) В чем разница в работе следующих двух методов:

private static Int32 M<T>(T t) where T: IComparable{.

}

И

private static Int32 M(IComparable t) {.

}

5) В документация тип Int32 определяется следующим образом:

[SerializableAttribute] [ComVisibleAttribute(true)] public struct Int32 : IComparable, IFormattable, IConvertible, IComparable<int>, IEquatable<int>

однако следующий код завершится ошибкой компиляции (int не содержит определения для ToSingle):

Int32 x = 5; Single s = x.ToSingle();

Почему это? 6) Есть ли способ при вызове цепочки делегатов получить возвращаемое значение всех методов, а не только последнего? 7) К какому методу нельзя применить атрибут? Это все на сегодня.

Ответы после обсуждения, если необходимо :) п.

с.

Если минусуете, то напишите хотя бы почему.

Теги: #.

NET #CLR #вопросы #Чулан

Вместе с данным постом часто просматривают: