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;

      }

    }

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

  • 相关阅读:
    Docker----mysql数据持久化
    Docker-----容器数据卷
    Docker-----制造自己的镜像
    Docker----常用命令(镜像和容器的常用命令)
    Docker----阿里云镜像加速
    Docker概述
    com.aliyuncs.exceptions.ClientException: InvalidVersion : Specified parameter Version is not valid.
    夜神模拟器的使用踩坑--adb devices无法连接设备
    python利用smtplib模块发送邮件
    appium环境安装说明
  • 原文地址:https://www.cnblogs.com/DannyShi/p/4501705.html
Copyright © 2011-2022 走看看