zoukankan      html  css  js  c++  java
  • C#学习笔记(比较)

    1 封箱和拆箱

      封箱(boxing)是把值类型转换为System.Object类型,或者转换为由值类型实现的接口类型。拆箱(unboxing)是相反的过程。

    封箱:

    struct myStruct

    {

      public int Val;

    }

    把结构放在object类型的变量中,以封箱

    myStruct valtype1 = new myStruct();

    valtype1.Val = 5;

    object.refType = valType1;

    拆箱:
    valType1.Val = 6;

    myStruct valType2 = (myStruct)refType;

    Console.WriteLine("valtype2.Val = {0}",valType2.Val);

    输出结果:

    valType2.Val = 5;

    注意:如果修改上面结构体为类类型

    class myStruct

    {

      public int Val;

    }

    就会出现下面的输出结果:

    valType2.Val = 6;

    也可以把值类型封装到一个接口类型中,只有他们实现这个接口就行。

    interface IMyInterface

    {

    }

    struct myStruct : IMyInterface

    { 

      public int Val; 

    }

    接着把结构封装到一个IMyInterface类型中

    myStruct valType1 = new myStruct();

    IMyInterface refType = valType1;

    然后用一般的数据类型转换语法拆箱他

    myStruct valType2 = (myStruct)refType;

    2 is运算符

    <operand> is <type>

    3 值比较

    3.1 运算符重载(operator overloading)

      要重载运算符,可给类添加运算符类型成员(他们必须是static)。一些运算符有多种用途,因此我们还指定了要处理多少个操作数,以及这些操作数的类型。一般情况下,操作数的类型与定义运算符的类相同,但也可以定义处理混合类型的运算符。

    实例:

    public class AddClass1

    {

      public int val;

      public static AddClass1 operator + (AddClass1 op1,AddClass1 op2)

      {

        AddClass1 returnVal = new AddClass1();

        returnVal.val = op1.val + op2.val;

        return returnVal;

      }

    }

    重载所有的二元运算符都是一样的,一元运算符看起来也是类似的,只有一个参数。

  • 相关阅读:
    1.5 判断是奇数还是偶数(比较运算符 & if...else)
    1.4计算器 (数字类型 & 算术运算符 &赋值运算符)
    1.3hello 张三(终端交互 & 字符串)
    1.2python语言环境 & python IDE(集成开发环境)搭建
    Centos 7 下安装jdk 7
    Centos 7 安装redis
    git 学习笔记
    git 基础操作
    git 获取远程分支的代码
    redis基础操作
  • 原文地址:https://www.cnblogs.com/DannyShi/p/4501705.html
Copyright © 2011-2022 走看看