83
голосов
6ответов
15285 просмотров

Как ValueTypes происходит от Object (ReferenceType) и по-прежнему остается ValueTypes?

C # не позволяет структурам быть производными от классов, но все ValueTypes являются производными от Object.Где проводится это различие? Как среда CLR справляется с этим?

5
голосов
8ответов
523 просмотров

Ссылки на обучение на C #

Через пару недель я обучу класс инженеров-первокурсников основным ссылкам на C # в рамках их первого курса программирования. Большинство из них никогда раньше не программировали, и у них было достаточно проблем с изучением объектов, так что обучение справочникам будет сложной задачей. Я планирую...

2
голосов
6ответов
1318 просмотров

Можно ли изменить значение по умолчанию для примитивного типа данных?

Недавно я создал общий класс Matrix , который действует как оболочка для коллекции List >. Насколько я могу судить, этот класс работает отлично. Однако у меня возникла небольшая проблема, связанная со значениями T по умолчанию. Я создаю экземпляр Matrix (3, 3), который создает матрицу цел...

7
голосов
2ответов
4781 просмотров

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...

3
голосов
3ответов
222 просмотров

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...

16
голосов
8ответов
18782 просмотров

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...

1
голосов
3ответов
3162 просмотров

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....

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...

0
голосов
1ответов
325 просмотров

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...

2
голосов
1ответов
1096 просмотров

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...

9
голосов
3ответов
1948 просмотров

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...

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

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?

5
голосов
9ответов
1788 просмотров

C # поддерживает типы значений и ссылочные типы, но все ли они являются объектами?

Я знаю, что в C # есть как значения, так и ссылочные типы, но как это сделать: int age = 100; string blah = age.ToString(); Если age является типом значения, как он использует метод ToString? Преобразуется ли он в объект ТОЛЬКО тогда, когда это требуется для внутренних целей?

1
голосов
2ответов
975 просмотров

C # доступ к свойствам типа значения, таким как переменные

Я хотел бы знать, возможно ли следующее со свойствами C #. У меня есть класс «Преобразование», который содержит матрицу 4x4 в частном поле члена. Теперь я хочу создать такое свойство: Matrix m; public Vector3 Position { get { return new Vector3(m[12], m[13], m[14]); } ...

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

Изменяемая оболочка типов значений для передачи в итераторы

Я пишу итератор, который должен передавать изменяемое целое число. public IEnumerable<T> Foo(ref int valueThatMeansSomething) { // Stuff yield return ...; } Это приводит меня к ошибке «Ошибка 476. Итераторы не могут иметь параметры ref или out». Мне нужно, чтобы это цело...

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

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

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

31
голосов
2ответов
6813 просмотров

Методы расширения, определенные для типов значений, нельзя использовать для создания делегатов. Почему бы и нет?

Методы расширения могут быть назначены делегатам, которые соответствуют их использованию на объекте, например: 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...

0
голосов
5ответов
525 просмотров

Типы значений, допускающие значение NULL

Если тип значения объявлен допускающим значение NULL, как мне принять меры предосторожности? Т.е. если в конструкторе у меня есть: public Point3 ( Point3 source ) { this.X = source.X; this.Y = source.Y; this.Z = source.Z; } произойдет ли сбой, если источник будет нулевым?

42
голосов
12ответов
10305 просмотров

Типы значений неизменны по определению?

Я часто читаю, что struct должны быть неизменными - разве они не по определению? Считаете ли вы int неизменным? int i = 0; i = i + 123; Вроде нормально - мы получаем новый int и назначаем его обратно i. Что насчет этого? i++; Хорошо, мы можем рассматривать это как ярлык. i = ...

29
голосов
7ответов
35682 просмотров

Как сделать тип значения допускающим значение 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 будет сериализовать объект следующим образо...

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

List <rectangle> - ведет себя как бокс</rectangle>

Все мы знаем, что универсальный List &lt;&gt; не упаковывает типы значений. Почему в следующем фрагменте кода метод Inflate не влияет на rects [1]? Если бокса нет и я хочу повредить прямоугольник [1], мне нужно написать три строки кода, как показано - прокомментировано. Кто-нибудь может объяс...

0
голосов
1ответов
1107 просмотров

Использование типа значения в качестве модели в частичном представлении в ASP.NET MVC

Есть ли способ использовать что-то вроде этого: System.Web.Mvc.ViewUserControl&lt;DateTime&gt;? Я получаю исключение, что тип является типом значения, а не ссылочным типом. Как правильно решить эту проблему? Спасибо. Я пытаюсь создать элемент управления, который использует DateTime для отоб...

379
голосов
12ответов
173241 просмотров

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

String является ссылочным типом, хотя он имеет большинство характеристик типа значения, таких как неизменяемость и наличие == перегрузки для сравнения текста, а не для проверки того, что они ссылаются на один и тот же объект. Почему же тогда строка не является просто типом значения?

4
голосов
3ответов
552 просмотров

Возьмите массив любого типа значения в качестве формального параметра

Я хотел бы иметь возможность объявить функцию как void foo(&lt;any value type&gt;[] data){} в C # 2.0. Если я объявлю это как void foo(ValueType[] data){} компилируется, но затем элементы в data [] обрабатываются так, как если бы они произошли от object, например Я не могу сказать ...

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

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

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

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

Сборка мусора для оболочек ValueType

Цитата из Ссылка MSDN для класса ValueType В случаях, когда необходимо, чтобы тип значения вел себя как объект, в куче размещается оболочка, которая делает тип значения похожим на ссылочный объект, и значение типа значения копируется в нее. Оболочка помечена, чтобы система знала, что она со...

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

C # - Как я могу убедиться, что все мои структуры инициализированы?

Я пишу приложение на C #, которое будет выполнять обширные вычисления. Все происходит вокруг базовой структуры - Value. Он в основном двойной с некоторыми дополнительными параметрами (точность и т. Это должна быть структура, потому что их будет создано слишком много, чтобы обеспечить выделение к...

11
голосов
4ответов
5021 просмотров

Как определить, является ли строка числом в C #

Я работаю над инструментом, в котором мне нужно преобразовать строковые значения в соответствующие типы объектов. Например. преобразовать строку типа "2008-11-20T16:33:21Z" в значение DateTime. Числовые значения, такие как "42" и "42.42", должны быть преобразованы в значение Int32 и значение Dou...

0
голосов
3ответов
1474 просмотров

Как изменить тип значения в штучной упаковке внутри метода

Я пытаюсь создать библиотеку для упрощения вызовов позднего связывания на C #, и у меня возникают проблемы с эталонными параметрами. У меня есть следующий метод для добавления параметра, используемого при вызове метода public IInvoker AddParameter(ref object value) { //List&lt...

5
голосов
5ответов
481 просмотров

Операции с произвольными типами значений

В этой статье описывается, как C #, чтобы разрешить добавление произвольных типов значений, для которых определен оператор +. По сути, это позволяет следующий код: public T Add(T val1, T val2) { return val1 + val2; } Этот код не компилируется, поскольку нет гарантии, что тип T имеет ...