• 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;

      }

    }

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

  • 相关阅读:
    各种协议与HTTP协议之间的关系
    在浏览器中输入url地址到显示主页的过程
    TCP 协议如何保证可靠传输
    TCP,UDP 协议的区别
    TCP 三次握手和四次挥手
    OSI与TCP/IP各层的结构与功能,用到的协议
    424. 替换后的最长重复字符
    webstorm快捷键
    S1:动态方法调用:call & apply
    S1:原型继承
  • 原文地址:https://www.cnblogs.com/DannyShi/p/4501705.html
Copyright © 2020-2023  润新知