当前位置: 首页 > 编程语言 > C#

VB.Net幂运算符(^)从C#重载Share

时间:2023-04-11 01:11:19 C#

VB.Net幂运算符(^)从C#重载我想重载vb.net^运算符以便我可以编写:DimcasMyClassSetc=New...DimdasMyClassSetd=c^2在C#中,^运算符是异或运算符,求幂运算不存在。有什么办法可以做到这一点?编辑事实证明,有一个SpecialNameAttribute允许您在C#中声明“特殊”函数,这将允许您(除其他外)重载VB幂运算符:publicclassExponentClass{publicdoubleValue{get;放;}[System.Runtime.CompilerServices.SpecialName]publicstaticExponentClassop_Exponent(ExponentClasso1,ExponentClasso2){returnnewExponentClass{Value=Math.Pow(o1.Value,o2.Value)};}}上面类中的op_Exponent函数是由VB提供的^求幂运算符转换而来的。有趣的是,文档指出.NETFramework当前未使用该属性...-原始答案-否。求幂(^)运算符被编译为Math.Pow(),因此它不能在C#中“重载”。来自LinqPad:SubMainDimiasIntegerDimjasIntegerj=Integer.Parse("6")i=(5^j)i.Dump()EndSubIL:IL_0001:ldstr"6"IL_0006:callSystem.Int32.ParseIL_000B:stloc.1IL_000C:ldc.r80000000000001440IL_0015:ldloc.1IL_0016:conv.r8IL_0017:调用System.Math.PowIL_001C:调用System.Math.Round:IL_。ovf.i4IL_0022:stloc.0IL_0023:ldloc.0IL_0024:callLINQPad.Extensions.Dump通过实验发现运算符重载只是语法糖,如果需要多语言开发最好避免.例如,VB.NET的^运算符被转换为op_Exponent函数,所以这就是C#可以使用的。为什么C#没有幂运算符?您可以使用本机.NET方式,因此您不依赖于运算符:Math.Pow(x,y);此外,对于y=2,使用multiply(x*x)会更快。以上就是C#学习教程:VB.NetPoweroperator(^)overloadingfromC#的全部内容。如果对你有用,需要了解更多C#学习教程,希望大家多加关注——本文来自网络合集,不代表立场,如涉及侵权,请点击有权联系管理员删除。如需转载请注明出处: