Все вопросы: [value-type]
34 вопросов
Как ValueTypes происходит от Object (ReferenceType) и по-прежнему остается ValueTypes?
C # не позволяет структурам быть производными от классов, но все ValueTypes являются производными от Object.Где проводится это различие? Как среда CLR справляется с этим?
Ссылки на обучение на C #
Через пару недель я обучу класс инженеров-первокурсников основным ссылкам на C # в рамках их первого курса программирования. Большинство из них никогда раньше не программировали, и у них было достаточно проблем с изучением объектов, так что обучение справочникам будет сложной задачей. Я планирую...
Можно ли изменить значение по умолчанию для примитивного типа данных?
Недавно я создал общий класс Matrix , который действует как оболочка для коллекции List >. Насколько я могу судить, этот класс работает отлично. Однако у меня возникла небольшая проблема, связанная со значениями T по умолчанию. Я создаю экземпляр Matrix (3, 3), который создает матрицу цел...
Definitions of "primitive", "value type", "struct", "class", "wrap" in Java and C#
I have been trying to understand the use of "primitives" in Java and C# and the difference between them (if any). I have asked a series of questions on SO and some of the answers seem to confuse the issue rather than clarify it. Some answers (and some MS documentation) appear to provide contradic...
Is there a difference between declaring and constructing a value type object?
I've been working in .NET for some time now, but occasionally I still get confused by a disparity between the framework and my prior experience in C++. In .NET, all objects are either value types or reference types. Reference types are allocated on the heap while value types are allocated on the...
C#, Copy one bool to another (by ref, not val)
I am at a brick wall here. Is it possible to copy one bool to the ref of another. Consider this code . . . bool a = false; bool b = a; b is now a totally separate bool with a value of false. If I subsequently change a, it will have no effect on b. Is it possible to make a = b by ref? How would...
Convert an array of different value types to a byte array
This is what I've come up with so far, but it doesn't seem very optimal, any ideas on better approaches? public void ToBytes(object[] data, byte[] buffer) { byte[] obytes; int offset = 0; foreach (object obj in data) { if (obj is string) obytes = System.Text....
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...
Performance of Sorting Reference Type vs Value Types
We were trying to sort a collection of FileInfo objects in .NET. We implemented our IComparer to ensure that FileInfo objects were sorted based on our criteria. We then noticed that performance of sorting the FileInfo objects was many times slower than just ints. On a hunch (and remembering ho...
Object Extension Methods on Value Types
I have an Extension Method: public static string ToDelimenatedString(this object[] array, string delaminator) {...} The Extension is applied to reference types but not value types. I assume this is because object is nullable. How would I write the method above to target value types, is it even...
Using NHibernate ICompositeUserType with a value type
I have a domain model object which has properties of type System.DateTimeOffset. I'm using a database which doesn't support this type natively, so I'm planning to store it using a column of type 'datetime' and one of type 'smallint'. I've dug around on how to map this using NHibernate component...
How to distinguish that a type is ValueType Or RefereceType?
some simple types like int, string , ....are easy to realize that they are ValueTypes Or RefrenceTypes. But I wanna to know is there any way to distinguish?
C # поддерживает типы значений и ссылочные типы, но все ли они являются объектами?
Я знаю, что в C # есть как значения, так и ссылочные типы, но как это сделать: int age = 100; string blah = age.ToString(); Если age является типом значения, как он использует метод ToString? Преобразуется ли он в объект ТОЛЬКО тогда, когда это требуется для внутренних целей?
C # доступ к свойствам типа значения, таким как переменные
Я хотел бы знать, возможно ли следующее со свойствами C #. У меня есть класс «Преобразование», который содержит матрицу 4x4 в частном поле члена. Теперь я хочу создать такое свойство: Matrix m; public Vector3 Position { get { return new Vector3(m[12], m[13], m[14]); } ...
Изменяемая оболочка типов значений для передачи в итераторы
Я пишу итератор, который должен передавать изменяемое целое число. public IEnumerable<T> Foo(ref int valueThatMeansSomething) { // Stuff yield return ...; } Это приводит меня к ошибке «Ошибка 476. Итераторы не могут иметь параметры ref или out». Мне нужно, чтобы это цело...
Примеры использования для упаковки типа значения в C #?
Бывают случаи, когда экземпляр тип значения следует рассматривать как экземпляр ссылочного типа. Для такие ситуации, тип значения экземпляр может быть преобразован в экземпляр ссылочного типа через процесс называется боксом. Когда значение тип экземпляр упакован, хранилище р...
Методы расширения, определенные для типов значений, нельзя использовать для создания делегатов. Почему бы и нет?
Методы расширения могут быть назначены делегатам, которые соответствуют их использованию на объекте, например: static class FunnyExtension { public static string Double(this string str) { return str + str; } public static int Double(this int num) { return num + num; } } Func<stri...
Типы значений, допускающие значение NULL
Если тип значения объявлен допускающим значение NULL, как мне принять меры предосторожности? Т.е. если в конструкторе у меня есть: public Point3 ( Point3 source ) { this.X = source.X; this.Y = source.Y; this.Z = source.Z; } произойдет ли сбой, если источник будет нулевым?
Типы значений неизменны по определению?
Я часто читаю, что struct должны быть неизменными - разве они не по определению? Считаете ли вы int неизменным? int i = 0; i = i + 123; Вроде нормально - мы получаем новый int и назначаем его обратно i. Что насчет этого? i++; Хорошо, мы можем рассматривать это как ярлык. i = ...
Как сделать тип значения допускающим значение NULL с помощью .NET XmlSerializer?
Предположим, у меня есть этот объект: [Serializable] public class MyClass { public int Age { get; set; } public int MyClassB { get; set; } } [Serializable] public class MyClassB { public int RandomNumber { get; set; } } XmlSerializer будет сериализовать объект следующим образо...
List <rectangle> - ведет себя как бокс</rectangle>
Все мы знаем, что универсальный List <> не упаковывает типы значений. Почему в следующем фрагменте кода метод Inflate не влияет на rects [1]? Если бокса нет и я хочу повредить прямоугольник [1], мне нужно написать три строки кода, как показано - прокомментировано. Кто-нибудь может объяс...
Использование типа значения в качестве модели в частичном представлении в ASP.NET MVC
Есть ли способ использовать что-то вроде этого: System.Web.Mvc.ViewUserControl<DateTime>? Я получаю исключение, что тип является типом значения, а не ссылочным типом. Как правильно решить эту проблему? Спасибо. Я пытаюсь создать элемент управления, который использует DateTime для отоб...
Почему в C # String является ссылочным типом, который ведет себя как тип значения?
String является ссылочным типом, хотя он имеет большинство характеристик типа значения, таких как неизменяемость и наличие == перегрузки для сравнения текста, а не для проверки того, что они ссылаются на один и тот же объект. Почему же тогда строка не является просто типом значения?
Возьмите массив любого типа значения в качестве формального параметра
Я хотел бы иметь возможность объявить функцию как void foo(<any value type>[] data){} в C # 2.0. Если я объявлю это как void foo(ValueType[] data){} компилируется, но затем элементы в data [] обрабатываются так, как если бы они произошли от object, например Я не могу сказать ...
Приводит ли вызов метода к типу значения к упаковке в .NET?
Я только что отвечал на вопрос о переполнении стека Все ли в .NET объект? . И один автор (в комментариях к принятому ответу), похоже, подумал, что выполнение вызова метода для типа значения приводит к боксу. Он указал мне на бокс и распаковку (программирование на C # Guide) , который не...
Сборка мусора для оболочек ValueType
Цитата из Ссылка MSDN для класса ValueType В случаях, когда необходимо, чтобы тип значения вел себя как объект, в куче размещается оболочка, которая делает тип значения похожим на ссылочный объект, и значение типа значения копируется в нее. Оболочка помечена, чтобы система знала, что она со...
C # - Как я могу убедиться, что все мои структуры инициализированы?
Я пишу приложение на C #, которое будет выполнять обширные вычисления. Все происходит вокруг базовой структуры - Value. Он в основном двойной с некоторыми дополнительными параметрами (точность и т. Это должна быть структура, потому что их будет создано слишком много, чтобы обеспечить выделение к...
Как определить, является ли строка числом в C #
Я работаю над инструментом, в котором мне нужно преобразовать строковые значения в соответствующие типы объектов. Например. преобразовать строку типа "2008-11-20T16:33:21Z" в значение DateTime. Числовые значения, такие как "42" и "42.42", должны быть преобразованы в значение Int32 и значение Dou...
Как изменить тип значения в штучной упаковке внутри метода
Я пытаюсь создать библиотеку для упрощения вызовов позднего связывания на C #, и у меня возникают проблемы с эталонными параметрами. У меня есть следующий метод для добавления параметра, используемого при вызове метода public IInvoker AddParameter(ref object value) { //List<...
Операции с произвольными типами значений
В этой статье описывается, как C #, чтобы разрешить добавление произвольных типов значений, для которых определен оператор +. По сути, это позволяет следующий код: public T Add(T val1, T val2) { return val1 + val2; } Этот код не компилируется, поскольку нет гарантии, что тип T имеет ...