值类型的op_Equality(==运算符) [英] op_Equality (== Operator) for Value-Types

查看:61
本文介绍了值类型的op_Equality(==运算符)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述




我对价值类型有一个可能非常基本的查询。


为什么我不能使用==运算符直接用于值类型(不是原始的

类型,如int,float,double等)?为什么我需要有一个隐含的

运算符(以类型转换为基本类型)或覆盖/重叠==

运算符?



-

快乐黑客,

Gaurav Vaish | www.mastergaurav.com
www.edujini-labs.com
http://eduzine.edujini-labs.com

----------------- ------------------------

Hi,

I have a, probably very basic, query on value-types.

Why cannot I use the == operator directly for value-types (not primitive
types like int, float, double etc)? Why do I need to either have an implicit
operator (to type-cast to primitive type) or override/overlaod the ==
operator myself?


--
Happy Hacking,
Gaurav Vaish | www.mastergaurav.com
www.edujini-labs.com
http://eduzine.edujini-labs.com
-----------------------------------------

推荐答案

开2007年3月20日星期二16:39:17 +0530,MasterGaurav

\(www.edujini-labs.com \) < ga ***************** @ nospam.gmail.com>

写道:
On Tue, 20 Mar 2007 16:39:17 +0530, "MasterGaurav
\(www.edujini-labs.com\)" <ga*****************@nospam.gmail.com>
wrote:

为什么我不能直接使用==运算符来表示值类型(不是int,float,double等原始类型)?为什么我需要有一个隐含的
运算符(对于基本类型的类型转换)或者自己覆盖/覆盖==
运算符?
Why cannot I use the == operator directly for value-types (not primitive
types like int, float, double etc)? Why do I need to either have an implicit
operator (to type-cast to primitive type) or override/overlaod the ==
operator myself?



我假设您想要的是operator ==的默认定义

值类型,它们对所有进行按位比较成员变量。


我同意这本来很方便,因为它通常正好是你想要的b / b。不知道为什么.NET团队没有这样做。他们可能会因为用户定义的价值类型是b $ b(或者应该是)罕见的而判断它不值得付出努力。

-
http://www.kynosarges.de


MasterGaurav( www.edujini-labs.com )写道:
MasterGaurav (www.edujini-labs.com) wrote:




我对价值类型有一个很可能非常基本的查询。


为什么我不能直接将==运算符用于值类型(不是原始的

类型,如int,float,double等)?为什么我需要有一个隐含的

运算符(以类型转换为基本类型)或覆盖/重叠==

运算符?
Hi,

I have a, probably very basic, query on value-types.

Why cannot I use the == operator directly for value-types (not primitive
types like int, float, double etc)? Why do I need to either have an implicit
operator (to type-cast to primitive type) or override/overlaod the ==
operator myself?



因为结构的二进制比较并不总是有意义的。


示例:


public struct Name {


private string _first,_last;


public name(string first,last){

_first = first; _last = last;

}


public string First {get {return _first; } $

public string Last {get {return _last; } $

}


姓名person1 =新名称(彼得,派克);

string er =" er";

姓名person2 =新名称(宠物+呃,公园+呃);


现在你有了两个具有不同二进制值的结构,但是相同的

逻辑值。


-

G?ran Andersson
_____
http://www.guffa.com


不同的二进制值?怎么样? IMO,他们(person1和person2)是

相同,每位一位。

作为字符串的赋值将具有相同的值,尽管
person2的
表达式。

" G?ran Andersson" < gu *** @ guffa.comha scritto nel messaggio

新闻:Ox ************** @ TK2MSFTNGP04.phx.gbl ...
Different binary values? How''s that? IMO, they (person1 and person2) are the
same, bit per bit.
The assignment will be made as strings with the same value, despite the
expression for person2.
"G?ran Andersson" <gu***@guffa.comha scritto nel messaggio
news:Ox**************@TK2MSFTNGP04.phx.gbl...

MasterGaurav( www.edujini-labs.com )写道:
MasterGaurav (www.edujini-labs.com) wrote:

>

我对值类型有一个很可能非常基本的查询。

为什么我不能直接将==运算符用于值类型(不是原始类型,如int,float,double等)?为什么我需要
有一个隐式运算符(以类型转换为基本类型)或
覆盖/重叠==运算符我自己?
>Hi,

I have a, probably very basic, query on value-types.

Why cannot I use the == operator directly for value-types (not
primitive types like int, float, double etc)? Why do I need to either
have an implicit operator (to type-cast to primitive type) or
override/overlaod the == operator myself?



因为结构的二进制比较并不总是有意义的。


示例:


public struct Name {


私人字符串_first,_last;


公共名称(字符串优先,最后一个){

_first = first; _last = last;

}


public string First {get {return _first; } $

public string Last {get {return _last; } $

}


姓名person1 =新名称(彼得,派克);

string er =" er";

姓名person2 =新名称(宠物+呃,公园+呃);


现在你有了两个具有不同二进制值的结构,但是相同的

逻辑值。


-

G?ran Andersson
_____
http://www.guffa.com



这篇关于值类型的op_Equality(==运算符)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆