VB.NET中怎么实现运算符重载

今天就跟大家聊聊有关VB.NET中怎么实现运算符重载,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

成都创新互联公司是一家集网站建设,山阳企业网站建设,山阳品牌网站建设,网站定制,山阳网站建设报价,网络营销,网络优化,山阳网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

在VisualBasic2005的诸多增强的功能中,运算符的重载是***大的之一。VB.NET运算符重载允许在任何数据类型上定义运算符,甚至是对你自己创建的基类型进行运算。

最经典的VB.NET运算符重载的例子就是定义复数的相加。一个简化了的拥有“ ”号重载运算符的Complex类,可能是下面这种形式:

PublicClassComplex   PublicRealAsDouble  PublicImagAsDouble   PublicSubNew(ByValrealPartAsDouble,ByValimagPartAsDouble)  Real=realPart Imag=imagPart EndSub   SharedOperator (ByVallhsAsComplex,ByValrhsAsComplex)AsComplex  ReturnNewComplex(lhs.Real rhs.Real,lhs.Imag rhs.Imag)  EndOperator   EndClass

现在,我们可以用非常直觉的方式,用“ ”号运算符来使两个复数相加:

DimlhsAsComplex=NewComplex(2.0,2.5)  DimrhsAsComplex=NewComplex(3.0,3.5)  DimresAsComplex=lhs rhs''res.real=5.0,res.imag=6.0

你也可以为你的自定义类型重载转换运算符。如果你试图把上面的res的值按照CType(res,String)转换,你会得到一个编译错误告诉你Complex类无法转换成String。如果考虑使用res.ToString的值的话,你会发现复数值的ToString方法返回的只是它的默认类型名。你可以通过VB.NET运算符重载CType转换运算符和ToString方法来解决这些问题,就像这样:

PublicSharedNarrowingOperatorCType(ByValValueAsComplex)AsString  ''这里的转换没有特殊的要求,因此也可以把Narrowing关键字改成Widening关键字  ReturnValue.Real.ToString&"i"&Value.Imag.ToString  EndOperator

作者原文的这段代码有误,无法实现覆盖基类Object类型的ToString方法!

PublicOverridesFunctionToString(ByValValueAsComplex)AsString  ReturnValue.Real.ToString&"i"&Value.Imag.ToString  EndFunction

正确的代码如下!

PublicOverridesFunctionToString()AsString  ReturnReal.ToString&"i"&Imag.ToString  EndFunction

现在CType(res,String)和res.ToString的返回值就和我们想要的一样了:“5.0i6.0”(实际得到的是“5i6”,VisualBasic把***的点零省略了,涕淌注)。转换运算符声明时必须要么被Narrowing修饰,要么被Widening修饰,以此来说明转换的性质。

看完上述内容,你们对VB.NET中怎么实现运算符重载有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。


网站标题:VB.NET中怎么实现运算符重载
URL标题:http://hbruida.cn/article/jsjcie.html