运算符重载送分来了

.Net技术 码拜 8年前 (2016-03-02) 892次浏览
问一下这段代码本人划红的地方用了运算符重载了吗?本人感觉没用到!
using System;
class Example
{
public static void Main()
{
ConsoleKeyInfo cki;
// Prevent example from ending if CTL+C is pressed.
Console.TreatControlCAsInput = true;
Console.WriteLine(“Press any combination of CTL, ALT, and SHIFT, and a console key.”);
Console.WriteLine(“Press the Escape (Esc) key to quit: \n”);
do
{
cki = Console.ReadKey();
Console.Write(” — You pressed “);
if((cki.Modifiers & ConsoleModifiers.Alt) != 0) Console.Write(“ALT+”);
if((cki.Modifiers & ConsoleModifiers.Shift) != 0) Console.Write(“SHIFT+”);
if((cki.Modifiers & ConsoleModifiers.Control) != 0) Console.Write(“CTL+”);
Console.WriteLine(cki.Key.ToString());
} while (cki.Key != ConsoleKey.Escape);
}
}
解决方案

20

你这代码是在控制键盘按键 和运算符没任何关系。
重载运行符大致是这样子(一般的 加减乘除等运算符)
<返回类型说明符> operator <运算符符号>(<参数表>)
{
<函数体>
}

20

没有用到
cki.Key 是 枚举类型 ConsoleKey
而枚举类型本来就可以直接比较的
例如

enum aaa  {  A, B, C, }
Console.WriteLine(aaa.A != aaa.B); //True

而 ConsoleKeyInfo 是结构,不可直接比较
需要遍历每个成员以判定能否都对应相等
重载运算符只是隐藏起这个过程而已


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明运算符重载送分来了
喜欢 (0)
[1034331897@qq.com]
分享 (0)