一个简单的例子:

VB.NET 对运算法支持的还是不够彻底Dim pt As New Point(00)
VB.NET 对运算法支持的还是不够彻底pt 
+= New Size(1010)
VB.NET 对运算法支持的还是不够彻底

C# 中没有问题。在 VB.NET 中就不能编译,错误是
 
Operator '+' is not defined for types 'System.Drawing.Point' and 'System.Drawing.Size'.

其实看一下 Point 的il 代码,已经有了一个加法的重载

VB.NET 对运算法支持的还是不够彻底.method public hidebysig specialname static 
VB.NET 对运算法支持的还是不够彻底        valuetype System.Drawing.Point  op_Addition(valuetype System.Drawing.Point pt,
VB.NET 对运算法支持的还是不够彻底                                                    valuetype System.Drawing.Size sz) cil managed


无奈只好改成:
VB.NET 对运算法支持的还是不够彻底        Dim pt As New Point(00)
VB.NET 对运算法支持的还是不够彻底        pt 
= Point.op_Addition(pt, New Size(1010))
VB.NET 对运算法支持的还是不够彻底

查了一下,msdn mag 最新的一期提到了这个问题,其实原因很简单,vb.net 的compiler 还没有100% 对运算符重载支持的足够好。

原文地址:http://www.msdn.microsoft.com/msdnmag/issues/04/12/AdvancedBasics/default.aspx

相关文章:

  • 2021-09-27
  • 2022-12-23
  • 2022-01-20
  • 2023-04-06
  • 2021-05-17
  • 2021-09-01
  • 2021-11-15
  • 2022-12-23
猜你喜欢
  • 2021-12-25
  • 2021-09-11
  • 2021-08-11
  • 2021-10-04
  • 2021-10-05
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案