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

C++/CLI: Boxing and Generic Lists

I am trying to create a generic list of references to PointF objects. (No, I am not looking to create a generic list of PointF objects.) However, the following line fails to compile: Generic::List<PointF^> ^pointList; // Generates error C3225 On the other hand, creating an array of Point...

12
голосов
4ответов
969 просмотров

Why does generic method with constraint of T: class result in boxing?

Why a generic method which constrains T to class would have boxing instructions in the generates MSIL code? I was quite surprised by this since surely since T is being constrained to a reference type the generated code should not need to perform any boxing. Here is the c# code: protected void ...

2
голосов
2ответов
124 просмотров

How to determine if type needs to be boxed?

MSDN docs say that only value types need boxing, but this does not apply to string, which is a value type and does not need to be boxed. I initially tried Type.IsValueType, but since that returns true for string, I can't use it to determine whether a type really needs to be boxed. Are there any o...

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

Hidden Boxing in the BCL?

Recently I became aware that there are some parts in the BCL that still use some "legacy" code that was probably written before generics were introduced in v2.0 of the framework. Apparently, parts of that "legacy" code may cause the CLR to perform numerous boxing/unboxing operations. Since exces...

10
голосов
5ответов
18331 просмотров

Type Casting an Object using a "Type" Object in C#

This one has proven to be a little tricky for me so far. I am wondering if it is possible to type cast an object using a System.Type object. I have illustrated below what I mean: public interface IDataAdapter { object Transform(object input); Type GetOutputType(); } public class SomeRa...

8
голосов
3ответов
2168 просмотров

When does a using-statement box its argument, when it's a struct?

I have some questions about the following code: using System; namespace ConsoleApplication2 { public struct Disposable : IDisposable { public void Dispose() { } } class Program { static void Main(string[] args) { using (Test()) { } ...

67
голосов
9ответов
18032 просмотров

C# non-boxing conversion of generic enum to int?

Given a generic parameter TEnum which always will be an enum type, is there any way to cast from TEnum to int without boxing/unboxing? See this example code. This will box/unbox the value unnecessarily. private int Foo<TEnum>(TEnum value) where TEnum : struct // C# does not allow en...

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

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

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

393
голосов
20ответов
435857 просмотров

Как преобразовать int [] в List <integer> в Java?</integer>

Как преобразовать int[] в List&lt;Integer&gt; на Java? Конечно, меня интересует любой другой ответ, кроме как делать это в цикле, элемент за элементом. Но если другого ответа нет, я выберу его как лучший, чтобы показать тот факт, что эта функциональность не является частью Java.

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

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

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

10
голосов
9ответов
7135 просмотров

Примеры использования для упаковки типа значения в C #?

Бывают случаи, когда экземпляр тип значения следует рассматривать как экземпляр ссылочного типа. Для такие ситуации, тип значения экземпляр может быть преобразован в экземпляр ссылочного типа через процесс называется боксом. Когда значение тип экземпляр упакован, хранилище р...

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

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

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

140
голосов
17ответов
90178 просмотров

Преобразование массива примитивных длинных длин в список длинных позиций

Это может быть довольно простой вопрос для руководителя службы, но моя первая попытка на удивление полностью не сработала. Я хотел взять массив примитивных long и превратить его в список, что я попытался сделать вот так: long[] input = someAPI.getSomeLongs(); List&lt;Long&gt; inputAsList = Ar...

15
голосов
2ответов
5062 просмотров

Enum Boxing и равенство

Почему возвращается False public enum Directions { Up, Down, Left, Right } static void Main(string[] args) { bool matches = IsOneOf(Directions.Right, Directions.Left, Directions.Right); Console.WriteLine(matches); Console.Read(); } public static b...

1
голосов
4ответов
489 просмотров

Вопросы о боксе

Я знаю, что бокс - популярная концепция, о которой доступно много информации, но у меня есть несколько вопросов, на которые я не могу найти ответов: 1) Если упаковка приводит к преобразованию типа значения (структуры) в объект (ссылочный тип) или ссылочного типа, тогда зачем использовать тип ...

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

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

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

3
голосов
5ответов
1686 просмотров

Бокс, что ты предпочитаешь и что быстрее?

Короче, я считаю, что бокс - это раздражение. Давайте посмотрим на альтернативы ... public class Box&lt;T&gt; where T : struct { public T Value { get; set; } public static implicit operator T(Box&lt;T&gt; box) { return box.Value; } } System.Int32 является произ...

25
голосов
4ответов
2667 просмотров

Приводит ли вызов метода к типу значения к упаковке в .NET?

Я только что отвечал на вопрос о переполнении стека Все ли в .NET объект? . И один автор (в комментариях к принятому ответу), похоже, подумал, что выполнение вызова метода для типа значения приводит к боксу. Он указал мне на бокс и распаковку (программирование на C # Guide) , который не...

5
голосов
6ответов
5596 просмотров

Предотвращают ли универсальные интерфейсы в C # бокс? (.NET против производительности Mono)

У меня есть интерфейс C # с определенными параметрами метода, объявленными как типы object. Однако фактический передаваемый тип может отличаться в зависимости от класса, реализующего интерфейс: public interface IMyInterface { void MyMethod(object arg); } public class MyClass1 : IMyInterf...

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

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

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