c#中如何实现<<操作符重载?作用是什么啊?

请问<<操作符重载有什么作用啊?如何实现啊?
C#中<<和>>是二元操作符呀,能重载吧。

<<是二进制运算符不是操作符,是用来执行向做移若干位的操作。
右移运算符 (>>) 将第一个操作数向右移动第二个操作数所指定的位数。
备注

如果第一个操作数为 int 或 uint(32 位数),则移位数由第二个操作数的低五位给出(第二个操作数 & 0x1f)。

如果第一个操作数为 long 或 ulong(64 位数),则移位数由第二个操作数的低六位给出(第二个操作数 & 0x3f)。

如果第一个操作数为 int 或 long,则右移位是算术移位(高序空位设置为符号位)。如果第一个操作数为 uint 或 ulong 类型,则右移位是逻辑移位(高位填充 0)。

用户定义的类型可重载 >> 运算符;第一个操作数的类型必须为用户定义的类型,第二个操作数的类型必须为 int。有关更多信息,请参见 operator。重载二元运算符时,也会隐式重载相应的赋值运算符(如果有)。

重载操作符是为了在使用该类时执行操作符的操作。以下为重载>操作符和<<运算符,并在调用时使用操作符进行判断的例子。

public class Class2
{
public int iValue;
public static bool operator >(Class2 c1, Class2 c2)
{
return (c1.iValue > c2.iValue);
}

public static Class2 operator <<(Class2 c1, Class2 c2)
{
return (c1.iValue << c2.iValue);
}

}

public class Class3
{
public void showDiff()
{
Class2 cl1=new Class2();
Class2 cl2=new Class2();
cl1.iValue = 5;
cl2.iValue = 10;
if (cl1 > cl2)
{
//
}
Console.WriteLine((cl1<<3).iValue);
}
}

Ps:不好意思,我还以为C#不能二进制运算符呢,查了一下发现可以。

参考资料:http://msdn.microsoft.com/zh-cn/vs2008/ms228498.aspx

温馨提示:内容为网友见解,仅供参考
第1个回答  2008-11-17
一般+-*/ 重载我们见过,比如
public class cash
{
int value;

}
如果我们重载cash的'+'
那么下面的代码
cash a1=new a1();a1.value=4000;
cash a2=new a2();a2.value=5000;
int total=a1+a2;
//total应该是9000
这里楼主你也知道为什么,
现在<<为什么要重载呢?<<是操作位运行,进行2进制移动,那么如果你定义一个类,想进行按位移动
那么你就要进行重载这个运算符,不过好像这中情况不太常见呵呵。
相似回答