Pull to refresh

Вопросы по .NET №2

Reading time1 min
Views558
Первую часть вопросов можно найти тут.
Продолжаем:

1) Как известно System.Array не реализует IEnumerable<T>, ICollection<T>, IList<T>, где T — тип массива (кстати, почему?). Однако же при использовании таких массивов можно пользоваться всем что предосавляют эти интерфейсы (если массив содержит только элементы ссылочного типа). Как так получается?

2) Вы выполнили такой код:
Console.WriteLine(a.GetType()) ;
и получили результат
SomeNamespace.SomeType[*];
Что это за тип такой?

3)Какой код будет работать быстрее и почему?
A
...
Int32[] a = new Int32[100];
int len = a.Length;
for(Int32 index = 0; index < len; index++) {
//operations with a[index];
}
...


или
B
...
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 doesn't contain a def. for 'ToSingle'):

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


Почему так?

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

7)К какому методу нельзя применить ни один атрибут?

На сегодня всё. Ответы после обсуждения, если надо будет:)

p.s. Если минусуете, то напишите за что хотя бы…
Tags:
Hubs:
Total votes 18: ↑11 and ↓7+4
Comments41

Articles