因为<<和>>除了一左一右外,别的都是一样的,故只需用其中一个作说明
<<是二元操作符,<<是将第一个操作数按照第二个操作数指定的位数向左移动,第二个操作数的类型必须是一个int或具有向int的预定义隐式数值转换的类型
当声明重载C#移位运算符时,第一个操作数的类型必须总是包含运算符声明的类或结构,并且第二个操作数的类型必须总是 int
class Program
{
staticvoid Main(string[] args)
{
ShiftClass shift1 =new ShiftClass(5,10);
ShiftClass shift2 = shift1<<2;
ShiftClass shift3 = shift1>>2;
Console.WriteLine("{0} << 2 结果是:{1}", shift1.valA, shift2.valA);
Console.WriteLine("{0} << 2 结果是:{1}", shift1.valB,shift2.valB);
Console.WriteLine("{0} >> 2 结果是:{1}", shift1.valA, shift3.valA);
Console.WriteLine("{0} >> 2 结果是:{1}", shift1.valB, shift3.valB);
Console.ReadLine();
}
publicclass ShiftClass
{
publicint valA;
publicint valB;
public ShiftClass(int valA, int valB)
{
this.valA= valA;
this.valB= valB;
}
publicstatic ShiftClassoperator<<(ShiftClass shift,int count)
{
int a= shift.valA<< count;
int b= shift.valB<< count;
returnnew ShiftClass(a, b);
}
publicstatic ShiftClassoperator>>(ShiftClass shift,int count)
{
int a= shift.valA>> count;
int b= shift.valB>> count;
returnnew ShiftClass(a, b);
}
}
}