Для программы, которую я создаю, я использую object
для хранения значений атрибутов HTML. Есть куча вещей, которые я делаю с этими значениями во всей программе. Поэтому в основном я хотел бы создать псевдоним для object
всякий раз, когда используется для хранения значений атрибутов HTML примерно до AttrValue
, чтобы сделать программу более понятной и иметь возможность легко добавлять функциональность, если это необходимо. Эти объекты используются в критически важных частях программы, поэтому я не уверен, что создание класса вместо структуры будет лучшей идеей. Что это было бы лучшим решением здесь, если производительность является главной проблемой (на самом деле, чем ясна)?Объект подкласса C#?
ответ
Вы можете создать псевдоним типа using AttrValue = System.Object;
. Однако этот псевдоним будет существовать только в вашем исходном коде. Ничего не мешает вам использовать, скажем, object
или string
, где вам нужен AttrValue
. Вы не сможете добавлять свойства или методы в свой псевдоним AttrValue
: он будет псевдонимом для object
, а не классом в своем собственном праве.
Возможно, вам лучше представить AttrValue
как самостоятельный класс, предположительно в качестве обертки для значения типа object
. Он может иметь одно поле (типа object
) и конструктор, который принимает один параметр object
.
Что касается структуры против класса, я бы не стал беспокоиться об этом. Вы почти никогда не нуждаетесь в структуре в .NET-коде: сборщик мусора способен обрабатывать множество экземпляров небольшого класса без заметных накладных расходов, а structs have their own oddities (в основном потому, что то, что похоже на один и тот же экземпляр в исходном коде, может в итоге оказаться двумя отдельными экземплярами на время выполнения).
Я верю, что если я использую 'using AttrValue = System.Object', мне нужно будет поместить это в каждый файл, для которого мне нужен объект, который будет сглажен правильно? – Juan
Справа - псевдонимы типа C# существуют только на уровне исходного кода. В скомпилированном коде вы не увидите 'AttrValue', только' object'. –
Ну, первый вопрос ... Почему вы используете object
?
HTML - это текст, и поэтому все атрибуты html являются строками. Вы можете конвертировать их в другой тип данных (ints или enums), но сохранение их в качестве объектов не поможет.
Если наследование было проблемой производительности, .NET имел бы некоторые серьезные проблемы. Наследование является фундаментальной концепцией в C#, и оно работает и отлично работает. Я предлагаю вам создать класс потомков и использовать его.
public class HtmlAttrValue: System.Object;
Если вы действительно хотите, вы можете также создать псевдоним типа в C#, хотя и не так хорошо, как некоторые другие языки. Алиас типа в C# применяется только к файлу, в котором он определен.
using HtmlAttrValue = System.Object;
Это плохо поддерживается и не очень хорошо известны, и я не рекомендую. Вам также может быть удобнее рассматривать ваш HTML как XHTML (если это возможно) и использовать некоторые из существующих типов и классов XML для вашей работы за вас.
Вы можете оставить «: System.Object» из объявления класса, так как он неявный. –
OK, теперь, если я использую 'public class HtmlAttrValue: System.Object {}' Как получить доступ к базовому объекту? Я имею в виду, если в моей программе сейчас я делаю это: ' void SomeFunc (object rawValue) { объект attrValue = rawValue; } ' Как я буду это делать, когда' attrValue' является экземпляром 'AttrValue'? Должен ли я добавить поле 'object' в класс' AttrValue', даже если класс является «объектом»? – Juan
- 1. Объект подкласса Задачи класса C
- 2. Объект суперкласса Объект данных подкласса
- 3. C# присваивает объект подкласса объекту класса
- 4. Инициализировать объект как экземпляр подкласса C++
- 5. Создать объект подкласса
- 6. Как получить объект определенного подкласса?
- 7. Инициировать объект подкласса из строки
- 8. Как «клонировать» объект в объект подкласса?
- 9. Как наложить объект подкласса на объект суперкласса
- 10. Объект подкласса CCSpriteBatchNode равен nil
- 11. Объект Call ViewController из подкласса
- 12. наследование, как вернуть объект подкласса?
- 13. Как вернуть объект соответствия подкласса?
- 14. Объект подкласса возвращает nil - Typhoon
- 15. Java OOP: ссылочный объект подкласса
- 16. Java: Конструктор подкласса имеет объект родительского класса
- 17. Java: Инициализировать объект-объект подкласса после super() - вызов?
- 18. объект подкласса, доступ к скрытой переменной суперкласса
- 19. как метод доступа родителей через объект подкласса в Objective C
- 20. C# - Как передать объект в общий тип для подкласса?
- 21. Подкласс подкласса подкласса ios
- 22. Matlab: преобразовать суперкласс в объект подкласса
- 23. подкласса
- 24. Знать класс подкласса в C++
- 25. C#: Сделайте экземпляр подкласса
- 26. C# - уникальный экземпляр подкласса
- 27. Задачи Objective-C подкласса
- 28. Модификатор доступа подкласса C++?
- 29. Компонент - событие подкласса C#
- 30. Objective C - инициализация унаследованных переменных объекта подкласса
Знаете ли вы о интерфейсах и/или наследовании? – strager
Я не понимаю, что вы говорите. «создать псевдоним для объекта» - что это значит? –
@ Kirk Woll, Кажется, @jsoldi хочет, чтобы в их системе была безопасность типов. – strager