2012-10-03 3 views
-5

У меня есть 2 класса, один из которых - базовый класс, а второй - производный класс. Хотите ограничить нарезку объектов, как я могу это сделать с помощью C# .net?Как предотвратить объект не должен быть срезом

+2

Не могли бы вы предоставить нам дополнительную информацию? например с некоторыми примерами кода, чего вы хотите достичь. – Erwin

+3

Вам не нужно беспокоиться о разрезании на C#. См. Этот очень похожий [вопрос] (http://stackoverflow.com/q/536267/944681) –

+0

Вы имеете в виду «запечатанное» ключевое слово, чтобы не допустить, чтобы производные классы перезаписывали некоторые методы или весь класс? (см. [запечатанный в MSDN] (http://msdn.microsoft.com/en-us/library/88c54tsw%28v=vs.100%29.aspx)) – Matten

ответ

0

UPDATE:

Мои первоначальные мысли, как описано ниже, были найдены как не так: См: C++ slicing in Java/C#


Оригинал Ответ:

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

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

Но нет никакого способа RESTRICT, что это то, что предположить, чтобы это произошло, и она определяется как

Естественное и неизбежное следствие присвоения по значению из подкласса объектов

Object slicing - Wikipedia

однако вы можете объявить класс как sealed, чтобы предотвратить наследование, которое будет ограничивать клонирование объектов, поскольку оно предотвратит e cause (Inheritance), поэтому у вас не будет производного класса для назначения базовой ссылки по значению.

+0

ссылка, которую вы указали, имеет дело с C++, а не с C#. Вопрос задает вопрос о разрезании на C# – Default

+0

Правда, но концепция среза объекта теоретическая и языковая агностика. каждый язык, который может обеспечивать поток структурированной памяти типа ценности, например. structs или classes будут обрабатывать проблему, называемую обрезкой объектов. – Mortalus

+0

не в соответствии с [этот ответ] (http://stackoverflow.com/a/536290/238902) – Default

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