现在的位置: 首页 > 综合 > 正文

C#中的比较

2014年02月17日 ⁄ 综合 ⁄ 共 1582字 ⁄ 字号 评论关闭

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

 

 

抱歉!评论已关闭.