CSDN广告是越来越多了,所有博客笔记不再更新,新网址 DotNet笔记
1:类型比较
所有对象都从Object对象中继承了GetType()方法了。结合typeof()运算符,就可以进行类型比较了。
A testA=new A();
if(testA.GetType()==typeof(A))
{
Console.WriteLine("类型一样");
}
2:封箱拆箱
封箱:把值类型转化为object类型
拆箱:把object装换为值类型
注意:以封箱变量而建成的类对象,其实是值类型拷贝的一个引用!就是说,引用的不是值类型本体。如代码:
namespace interface_ns
{
public struct struct_A
{
public string name;
}
class Program
{
static void Main(string[] args)
{
struct_A testBox = new struct_A();
testBox.name = "zhifeiya_A";
Object object_Box = (Object)testBox;
Console.WriteLine("第1次查看name:"+testBox.name);
testBox.name = "zhifeiya_B";
struct_A testBox2 = (struct_A)object_Box;
Console.WriteLine("第2次查看name:" + testBox2.name);
Console.Read();
}
}
}
结果:
3: is运算符
is运算符并不是说明对象是哪个类型,而是判断给定对象是否是给定类型的对象,或者可以传换为给定的类型。
返回的是bool型
语法:if(对象 is 类型){ 。。。 }
使用范围: 类,接口,值类型。
namespace interface_ns
{
public struct struct_A
{
public string name;
}
class Program
{
static void Main(string[] args)
{
struct_A testBox = new struct_A();
if(testBox is Object)
{
Console.WriteLine("testBox能够封箱到Object");
}
if(testBox is struct_A)
{
Console.WriteLine("testBox是struct_A类型的");
}
Console.Read();
}
}
}
结果:
4:运算符重载
同函数重载
注意:运算符重载必须静态的!不解释。
并非所有的运算符都能重载 eg:+=运算符 , &&运算符 ,= 运算符, ||运算符
一般参数的个数和重载的运算符的“元数”有关。如:一元一个参数,二元2个参数
有些运算符必须成对的重载 例如: 大于号“>” 和 小于号 "<"
namespace interface_ns
{
public class class_A
{
public string name;
public static class_A operator +(class_A a1,class_A a2)
{
class_A a = new class_A();
a.name = a1.name + a2.name;
return a;
}
}
class Program
{
static void Main(string[] args)
{
class_A a1 = new class_A();
a1.name = "zhifeiya";
class_A a2 = new class_A();
a2.name = "harper";
class_A a = a1 + a2;
Console.WriteLine(a.name);
Console.Read();
}
}
}
运行结果:zhifeiyaharper