use*_*769 2 .net c# struct operator-overloading
如果引用类型不重载相等运算符==,则将使用内置相等运算符on Object.为什么用户定义不一样structs:
struct A{ }
static void Main(string[] args)
{
A a = new A();
A a1 = new A();
bool equal= (a == a1); //error
}
Run Code Online (Sandbox Code Playgroud)
即,是否ValueType(所有structs派生的)也是过载运==算符?
这样的默认==运算符如何工作?对于引用类型,比较地址是合理的,但是因为对于两个ValueTypes,检查永远不会成立(因为如果两个ValueTypes在范围内,那么它们保证在堆栈上具有不同的位置),地址比较是没有意义的.
正如编译器已经有用地指出的那样,ValueType非常故意没有默认的==运算符.
| 归档时间: |
|
| 查看次数: |
1157 次 |
| 最近记录: |