是否可以创建一个不是结构而是值类型的类,或者类似于值类型,因为它在传递时进行复制而不是通过引用传递。
edit:
抱歉,问题在提出后必须进行编辑。
另外,请参阅此问题以获取更多信息。在不存在的struct布局中循环 https://stackoverflow.com/questions/9296251/cycle-in-the-struct-layout-that-doesnt-exist
EDIT 2
现在看来,您正在寻找使用声明一个真正的值类型class
关键字,根据定义这是不可能的。
由于您正在考虑创建一个语义类似于 System.String 的类,因此您可能应该反编译 System.String。它的许多魔力都隐藏在 CLR 中,但是您将看到的大部分内容都会有所帮助。
对于初学者来说,你肯定需要超载==
and !=
,并覆盖Equals()
and GetHashCode()
。您几乎肯定会想要实施IComparable<T>
and IEquatable<T>
以及。
字符串的另一个重要方面是它们不可变的。这是它们类似值的行为的重要组成部分,因为它保证两个相等的字符串始终相等。如果字符串是可变的,则可以修改其中一个字符串以使其与另一个字符串不相等。
我还应该指出,虽然字符串具有使其看起来像值类型的语义,它当然是一个引用类型,引用语义的某些方面是不可避免的。
如果您发布更多关于为什么要这样做的信息,我们可以提供更具体的建议。
EDIT
根据您的编辑,您似乎对字符串有误解。虽然它们在某些方面确实表现得像值类型,每次将它们传递给方法时,它们不会通过复制数据来直接传递。实现这一目标的唯一方法是声明一个struct
。与所有类一样,字符串是只能通过引用访问的引用类型;您只能直接操作引用;你只能通过参考资料到一个方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)