Имеют ли интерфейсные переменные семантику типа значения или ссылочного типа?
Интерфейсы реализуются по типам, и эти типы являются либо типами значений, либо ссылочными типами. Очевидно, что и int
, и string
реализуют IComparable
, а int
является типом значения, а string
является типом значения. ссылочный тип. Но как насчет этого:
IComparable x = 42;
IComparable y = "Hello, World!";
(Вопрос, на который я пытался ответить, предположительно был удален, потому что он спрашивал, хранятся ли интерфейсы в стеке или куче, и, как мы все должны знать, более конструктивно подумать о различиях между значения и ссылочные типы с точки зрения их семантики, а не их реализации. Для обсуждения см. статью Эрика Липперта Стек представляет собой деталь реализации .)