unboxing
Почему это работает: decimal dec = new Decimal(33); double dd = (double) dec; Console.WriteLine(dd); Но не это: decimal dec = new Decimal(33); object o = (object)dec; double dd = (double) o; Console.WriteLine(dd); Второй пример бросает: Система.InvalidCastException: указанное приведение недопусти...
Рассмотрим код MSIL, сгенерированный для следующего универсального метода: public static U BoxValue<T, U>(T value) where T : struct, U where U : class { return value; } Смотрите: .method public hidebysig static !!U BoxValue<valuetype .ctor ([mscorlib]System.ValueType, !!U) T,class U>...
Я отметил разницу в поведении автоматической распаковки между Java SE 6 и Java SE 7. Мне интересно, почему это так, потому что я не могу найти никакой документации изменений в этом поведении между этими двумя версиями. Вот простой пример: Object[] objs = new Object[2]; objs[0] = new Integer(5); int myInt ...
У меня есть treeview, где некоторые из treenodes имеют строку, сохраненную в их объекте тега, а некоторые теги остаются пустыми. Позже я хочу использовать строки для чего-то, в узлах, где они существуют. For Each tn As TreeNode In TreeView1.Nodes If Not String.IsNullOrWhiteSpace(tn.Tag) Then Call...
Я просто пересматриваю Главу 4 C#, в которой подробно рассматриваются типы nullable, и я добавляю раздел об использовании оператора "as", который позволяет вам писать: object o = ...; int? x = o as int?; if (x.HasValue) { ... // Use x.Value in here } Я думал, что это было действительно аккуратно, и что...
Я ищу ясный, краткий и точный ответ. В идеале как фактический ответ, хотя ссылки на хорошие объяснения приветствуются....
.NET 1.0 способ создания коллекции целых чисел (например) был: ArrayList list = new ArrayList(); list.Add(i); /* boxing */ int j = (int)list[0]; /* unboxing */ штраф за использование этого-отсутствие безопасности типа и производительности из-за бокса и распаковки. способ .NET 2.0 заключается в ...