Все вопросы: [unboxing]

12 вопросов

похожие теги:
3
голосов
2ответов
834 просмотров

Компилятор C # + общий код с боксом + ограничения

Давайте рассмотрим код 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.ValueTy...

332
голосов
10ответов
30952 просмотров

Performance surprise with "as" and nullable types

I'm just revising chapter 4 of C# in Depth which deals with nullable types, and I'm adding a section about using the "as" operator, which allows you to write: object o = ...; int? x = o as int?; if (x.HasValue) { ... // Use x.Value in here } I thought this was really neat, and that it coul...

2
голосов
5ответов
1202 просмотров

C# Type Inference Gets the Wrong Type

I created the following property, which threw an InvalidCastException if the getter was accessed when ViewState[TOTAL_RECORD_COUNT] was null. public long TotalRecordCount { get { return (long)(ViewState[TOTAL_RECORD_COUNT] ?? -1); } set { ViewState[TOTAL_RECORD_COUNT] = value; } } My t...

4
голосов
4ответов
4704 просмотров

What's the best approach to solve the c# unboxing exception when casting an object to a valuetype?

I just converted a code snippet from VB.NET to C# and stumbled over this issue. Consider this code: Dim x As Integer = 5 Dim y As Object = x Dim z As Decimal = CType(y, Decimal) No error from compiler or at runtime. z is five. Now let's translate this code to C# int x = 5;...

71
голосов
5ответов
45244 просмотров

В чем разница между боксом / распаковкой и приведением типов?

В чем разница между упаковкой / распаковкой и приведением типов? Часто кажется, что эти термины используются как синонимы.

61
голосов
4ответов
23466 просмотров

Почему я не могу распаковать int как десятичное?

У меня есть IDataRecord reader, из которого я получаю десятичную дробь следующим образом: decimal d = (decimal)reader[0]; По какой-то причине это вызывает недопустимое исключение приведения, говоря, что «Указанное приведение недействительно». Когда я набираю reader[0].GetType(), он гов...

34
голосов
6ответов
8774 просмотров

Зачем некоторым языкам нужны бокс и распаковка?

Это не вопрос упаковки и распаковки, это скорее зачем это нужно языкам вроде Java и C #? Я хорошо знаком с C ++, STL и Boost. В C ++ я мог бы очень легко написать что-то вроде этого std::vector<double> dummy; У меня есть некоторый опыт работы с Java, но я был очень удивлен, ...

2
голосов
5ответов
4041 просмотров

C #: приведение объекта к беззнаковому числовому типу с помощью Generics

Я пытаюсь написать код для преобразования данных из поля типа объекта (полученного из DataSet) в его целевые (типизированные) поля. Я делаю (по крайней мере, пытаюсь) использовать динамическое преобразование. Кажется, он отлично работает для строк, int, DateTime. Но это не работает для беззна...

28
голосов
6ответов
7209 просмотров

Бокс против распаковки

Еще один недавний вопрос на собеседовании по C #, который у меня возник, был: знаю ли я, что такое бокс и распаковка. Я объяснил, что типы значений находятся в стеке, а ссылочные типы - в куче. Когда значение приводится к ссылочному типу, мы называем это боксом и наоборот. Затем он попросил м...

2
голосов
4ответов
954 просмотров

Создайте ключевое слово "AS"

Недавно я начал работать с JSON и фреймворком ExtJs и в качестве примера наткнулся на следующий код. мы получаем информацию из интерфейса, используя это: object updatedConfig = JavaScriptConvert.DeserializeObject(Request["dataForm"]); Затем в примере они делают следующее: JavaScript...

2
голосов
3ответов
961 просмотров

C # бокс вопрос

Сначала два примера: // This works int foo = 43; long lFoo = foo; // This doesn't object foo = (int)43; long? nullFoo = foo as long?; // returns null long lFoo = (long)foo; // throws InvalidCastException if (foo.GetType() == typeof(int)) Console.WriteLine("But foo is an int..."); // This...

136
голосов
8ответов
52440 просмотров

Что такое упаковка и распаковка и в чем заключаются компромиссы?

Я ищу ясный, лаконичный и точный ответ. В идеале в качестве фактического ответа, хотя ссылки на хорошие объяснения приветствуются.