Реализация типов Nullable в универсальном интерфейсе

Используя JQuery Вы делаете это:

var imgWidth = $("#imgIDWhatever").width();
9
задан Laurence Gonsalves 28 August 2009 в 04:33
поделиться

3 ответа

Я бы не стал этого делать, но это, вероятно, единственный способ заставить его работать.

public class MyWrapperClass<T> where T : struct 
{
    public Nullable<T> Item { get; set; }   
}

public class MyClass<T> where T : class 
{

}
7
ответ дан 4 December 2019 в 13:48
поделиться

Типы, допускающие значение NULL, не удовлетворяют ограничениям class или struct :

Спецификация языка C # v3.0 (раздел §10.1.5: Тип ограничения параметров):

Ограничение ссылочного типа указывает, что аргумент типа, используемый для параметра типа, должен быть ссылочным типом. Все типы классов, типы интерфейсов, типы делегатов, типы массивов и параметры типа, известные как ссылочный тип (как определено ниже), удовлетворяют этому ограничению. Ограничение типа значения указывает, что аргумент типа, используемый для параметра типа, должен быть типом значения, не допускающим значения NULL.

Все типы структур, не допускающие значения NULL, типы перечислений и параметры типов, имеющие ограничение типа значения, удовлетворяют этому ограничению. Обратите внимание, что, хотя он и классифицирован как тип значения, тип, допускающий значение NULL (§4.1.10), не удовлетворяет ограничению типа значения. Параметр типа, имеющий ограничение типа значения, также не может иметь ограничение-конструктор.

7
ответ дан 4 December 2019 в 13:48
поделиться

Есть ли причина, по которой вам нужно ограничить тип U классом?

public interface IOurTemplate<T, U>
    where T : class
{
    IEnumerable<T> List();
    T Get(U id);
}

public class TestInterface : IOurTemplate<MyCustomClass, Int32?>
{
    public IEnumerable<MyCustomClass> List()
    {
        throw new NotImplementedException();
    }

    public MyCustomClass Get(Int32? testID)
    {
        throw new NotImplementedException();
    }
}

FYI: int? - это сокращение C # для Nullable .

1
ответ дан 4 December 2019 в 13:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: