子类化C#的对象?

时间:2010-08-12 16:48:32

标签: c# .net

对于我正在使用object来保存HTML属性值的程序。如果我在整个程序中使用这些值进行操作,那就有很多。因此,我基本上希望为object创建一个别名,只要用于将HTML属性的值保存到类似AttrValue的内容,只是为了使程序更加清晰,并且能够在需要时轻松添加功能。这些对象用于程序的关键性能部分,所以我不确定是否创建类而不是结构是最好的主意。如果性能是主要关注点(实际上不仅仅是清晰度),那么这里最好的解决方案是什么?

3 个答案:

答案 0 :(得分:2)

您可以创建类似using AttrValue = System.Object;的类型别名。但是,此别名仅存在于源代码中。没有什么可以阻止您使用objectstring,而您需要AttrValue。您将无法在AttrValue别名中添加属性或方法:它将是object的别名,而不是其自身的类别。

你可能最好将AttrValue作为一个类本身引入,可能是作为类型object的值的包装器。它可能只有一个字段(类型为object),而且构造函数只有一个object参数。

关于struct与class,我不担心这个。你几乎从不需要.NET代码中的结构:垃圾收集器能够处理大量的小类实例而没有明显的开销,structs have their own oddities(主要是因为源代码中看起来像同一个实例的东西很容易就会结束了运行时两份单独的副本。)

答案 1 :(得分:1)

嗯,第一个问题是......你为什么要使用object

HTML是文本,因此所有html属性都是字符串。您可能希望将它们转换为其他数据类型(整数或枚举),但将它们存储为对象并不会有帮助。

答案 2 :(得分:0)

如果继承是性能问题,那么.NET会遇到一些重大问题。继承是C#中的一个基本概念,它的工作和执行非常出色。我建议你创建一个后代类并使用它。

public class HtmlAttrValue: System.Object;

如果你真的想,你也可以在C#中创建一个类型别名,但不如其他一些语言。 C#中的类型别名仅适用于定义它的文件。

using HtmlAttrValue = System.Object;

这支持得很差,而且不是很有名,我不推荐它。您可能还会发现将HTML视为XHTML(如果可能)更方便,并使用一些现有的XML类型和类来为您完成工作。