C#两种特别的运算符
is运算符
这个运算符主要用来检测某变量的类型是否有特定的类型相兼容
我们看一下下面的一个示例:
public static void Main()
{
String str = "";
if (str is Object)
{
Console.WriteLine(str.GetType() + "与该类型是兼容的");
}else{
Console.WriteLine(str.GetType() + "与该类型是不兼容的");
}
}
程序会输出System.String 与该类型的兼容的
。
如果把上面的Object
改成Double
那么输出会输出不兼容了!
as运算符
这个运算符主要用来将引用类型进行显式的类型转换
注意:
- 如果要转换的变量的类型与指定的类型相兼容,转换就会成功进行;
- 如果不兼容,那么返回值的就是 null;
- as关键字只能作用于引用类型或者可以为null的类型(比如Double等就不可以啦);
由于上面的第三条规则,所以这个运算符基本就没啥用处了。常见的类型除了 String string Object 和 object之外就基本没有了。
运算符重载
我先既然都讲到这里了,就再讲一下运算符重载吧(一般学过C++的都知道这个,学Java的可能就没听过了)!
看下面的一个小例子:
class Count {
public int num;//该类中只有一个参数
public Count(int num) {//初始化参数
this.num = num;
}
public static Count operator +(Count c1,Count c2){//将 + 进行重载,传入俩参数
return new Count(c1.num+c2.num);//返回新的Count实例
}
}
class Test {
public static void Main(){
Count c1 = new Count(2);
Count c2 = new Count(4);
Count c3 = c1 + c2;
Console.WriteLine("c3中num值为:"+c3.num);//输出 6
}
}
上面就是一个最基本的重载了,大家可以对照着去实现 - * /
等等。