Структура и ограничение new()

144
17 апреля 2019, 05:10

1)

2)

3) Делаем вот так:

public struct mySTRUCT
{
    public c(){}
}

Компилятор ругается, всё верно

[CS0568] Structs cannot contain explicit parameterless constructors

4) Делаем обобщённый класс с указанием new()

public class myCLASS<T> where T : new () {}

А так же делаем обычнуб структуру

public struct mySTRUCT{}

А теперь делаем вот так:

var q = new myCLASS<mySTRUCT>();

Компилируем и получаем:

То есть я повесил ограничение на запрет отсутствия пустого конструктора у типа, при этом забросил тип структура, который не может иметь пустого конструктора, а получил успех??????

В чём тут магия, почему компилятор не ругается?)

Answer 1

Типы значений (структурные типы) по умолчанию содержат конструктор без параметров.

https://docs.microsoft.com/ru-ru/dotnet/csharp/programming-guide/classes-and-structs/constructors

Если не предоставить конструктор для структуры, C# будет использовать неявный конструктор по умолчанию, чтобы автоматически инициализировать каждое поле типа значения значением по умолчанию.

READ ALSO
Как переделать переменную RaycastHit в GameObject

Как переделать переменную RaycastHit в GameObject

Пускаю лучь, получаю переменную RaycastHit hitТеперь мне нужно узнать какой это обьект и записать его в переменную GameObject hittedObject

159
Как изменить цвет стиля для всех форм?

Как изменить цвет стиля для всех форм?

У меня есть основная форма и форма настройкиВ форме настройки я должен менять цвет формы и она должна передаваться на все остальные формы

186
Условные переходы if c#

Условные переходы if c#

помогите пожалуйста разобраться не пойму, как добавит третьего оператора, задача такая при вводе роста, программа говорит, какого роста человек...

184
Как полностью удалить ячейку в mysql с помощью C#?

Как полностью удалить ячейку в mysql с помощью C#?

Я соединил бд с си шарпом и у меня есть функция удаления:

147