2010-07-25 2 views
1

Можно ли расширить примитивные типы, такие как System.String и System.Int32 (IE: integer) в .Net 4, и если да, то как?Расширение примитивных типов

Чтобы быть более конкретным, я знаю понятие частичных классов, но это, похоже, не является ответом. Также я обнаружил, что System.String не наследуется, а Int32 - это структура.

Наконец, я заинтересован в том, чтобы знать как ответ VB.Net, так и C# на указанный выше вопрос.

Спасибо всем ..

ответ

13

Вы не можете продлить их непосредственно - String класса запечатан, например, и как вы отметили обертки типа значения (например, как Int32), как правило, Структура.

Вы можете написать им методы расширения (C#, VB.NET), вот для чего они предназначены.

Другой вариант - написать обертку вокруг них, разоблачить все их свойства и добавить дополнительные функции.

+0

Почему downvote? – Oded

1

Так же, как дополнительная информация (Одед право уже на другом материале):

Там нет «примитивных типов» в .Net. Только классы и типы значений (называемые структурами в C#) (и все они являются декомментами объекта).

Однако вы не можете наследовать от типов значений (например, int, byte, ...), и вы не можете наследовать от закрытых классов (например, строки).

+1

sry, но это неточно не все типы происходят от объекта http://blogs.msdn.com/b/ericlippert/archive/2009/08/06/not-everything-derives-from-object.aspx –

+1

Я никогда не писал, что Все типы выводятся из объекта. Но классы и типы значений DO! Цитата из вашей связанной страницы: «Многие типы производятся от объекта. Все типы значений, включая перечисления и типы с возможностью NULL, происходят от объекта». – Foxfire

+1

Вы * сделали * пишите, что все типы происходят от объекта, говоря «Только классы и типы значений (называемые структурами в C#) (и все они являются декадантами объекта)», и это неверно. В .Net есть примитивные типы. Они сопоставляются с структурами, и они не происходят от объекта. http://msdn.microsoft.com/en-us/library/aa711900(v=vs.71).aspx –

Смежные вопросы