Powiel możliwe:
Nullable type as a generic parameter possible?Dlaczego Nullable <T> nie pasuje jako rodzaj odniesienia do ogólnych ograniczeń
natknąłem się bardzo dziwne rzeczy z ograniczeniami typu rodzajowego. Mam klasy tak:
public SomeClass<T> where T:class
{
}
Jednak znalazłem Nie mogę używać zerowalne typów jak ja się spodziewać:
new SomeClass<int?>();
pojawia się błąd, że int?
musi być odniesienie rodzaj. Czy Nullable jest po prostu strukturą z syntaktycznym cukrem, aby wyglądał jak typ referencyjny?
Jaki jest powód tego ograniczenia? Czy możesz podać więcej kontekstu? FYI Nullable jest zadeklarowane jako: 'public struct Nullable gdzie T: struct' –
@SimonWhitehead w zasadzie dlatego, że używanie typów wartości w tej klasie może mieć nieoczekiwane zachowanie i duży wpływ na wydajność – Earlz
Wtedy myślę, że odpowiedź w górę jest" tak, Nullable jest struct ". Nie jestem całkiem pewien, co uważasz za cukier syntaktyczny dla Nullable. Wygląda na to, że jedyną opcją jest rolka własna. –