2 qq 19595175 qq_19595175 于 2016.02.08 22:23 提问

VB.net给Color类添加运算符怎么做?

如题,要**让Color类支持“-”这个运算符**,返回一个Integer,有没有办法做到?
如写好后 Color.White - Color.Yellow 应该就可以返回一个Integer
具体的运算步骤不用写,只求框架代码qwq

3个回答

caozhy
caozhy   Ds   Rxr 2016.02.09 05:11
已采纳

首先要注意,Color类可以用一个Integer表示,但是两个Integer相减极端的情况下可能出现下溢。而且考虑到其实一个颜色是4个字节的分量,从颜色本身的角度来说,对每个分量计算才有意义,直接Integer相减没有事实上的意义,你得到的值就算不下溢也可能是一种很奇怪的颜色。

其次,VB不支持对现有的类的运算符重载。也就是说,Color不是你定义的,所以你不能直接重载它的减运算符。但是你可以写一个函数来做。

caozhy
caozhy   Ds   Rxr 2016.02.09 07:32

如果非要写,可以这么写

Imports System
Imports System.Drawing
Public Class Test
    Public Shared Sub Main()
        Dim c1 As Color = Color.Red
        Dim c2 As Color = Color.Blue
        Dim i As Integer = c1.ToArgb() - c2.ToArgb()
        Console.WriteLine(i)
    End Sub
End Class
caozhy
caozhy   Ds   Rxr 2016.02.09 07:32
Csdn user default icon
上传中...
上传图片
插入图片