争怎路由网:是一个主要分享无线路由器安装设置经验的网站,汇总WiFi常见问题的解决方法。

帮帮我,我负载过重(C#)

时间:2024/7/10作者:未知来源:争怎路由网人气:

”、“?:”这样的运算符以及诸如“+=”这样的复合赋值运算符无法重载,因为这会使代码变得
异常复杂,得不偿失。

重载的转换
让我们返回到最初的示例:

Complex i = 5;
Complex sum = i + j;

虽然知道了如何重载加法运算符,但我们仍需要想方法使第一个语句发挥作用。这可以通过对转换进行重载来实现。

隐式和显式转换
C# 同时支持隐式和显式转换。隐式转换是那些总是能成功执行的转换,并且其成功的原因通常是目标类型的范围等于或大
于源类型的范围。从 short 到 int 的转换就是一个隐式转换。隐式转换可以作为赋值语句的一部分:

short svalue = 5;
long lvalue = svalue;

显式转换是那些可能导致数据丢失或者引发异常的转换。因此,显式转换要求强制进行类型转换:

long lvalue = 5;
short svalue = (short) lvalue;

对转换进行重载时,应该决定转换是隐式还是显式的,但是,应该明白隐式转换模型是安全的,而显式转换则是有风险
的。

将整数值 5 转换为复数的转换定义如下所示:

public static implicit operator Complex(int value)
{
return(new Complex(value, 1.0));
}

这允许进行从 int 到 Complex 的隐式转换。

语言的互操作性
以上是在 C# 中对运算符进行重载的情况。涉及到其它语言时,事情将变得略为复杂。

运算符重载不是 .NET 公共语言子集中的功能之一,这意味着在某些语言中将无法使用重载。因此,提供非重载的替代方
案是非常重要的,以便在其它语言中仍然能执行相同的运算。如果您的类定义了加法运算符,它还应该定义相同的方法,
使用类似 Add 这样的名称进行命名。


关键词:帮帮我,我负载过重(C#)




Copyright © 2012-2018 争怎路由网(http://www.zhengzen.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版