zoukankan      html  css  js  c++  java
  • .net 基元类型,引用类型和值类型

    基元类型(primitive type):

      编译器直接支持的数据类型称为基元类型(primitive type)。

    string 与 String:

      由于C#中的string (一个关键字)直接映射到System.String (一个FCL类型),所以两者没有区别,都可以使用。

      但是在C#中int始终映射在System.Int32,所以不管在 64操作系统还是32位操作系统上,代表的都是32位整数。

         在C#中long映射到的是System.Int64,但是在其他编程语言中,long可能映射到Int16或Int32。 例如C++

    checked 与 unchecked 基元类型。

        是否溢出检查

      

        static void Main(string[] args)
            { 
                Byte b = 200;
                b = checked((Byte)(b + 200));
                Console.ReadLine();
            }
         static void Main(string[] args)
            { 
                Byte b = 200;
                b = (Byte)checked((b + 200));
                Console.ReadLine();
            }

    引用类型与值类型: 

      CLR支持两种类型:引用类型与值类型:

      1.任何被称为“类”的类型都是引用类型。

      2.文档将所有值类型都称为结构或枚举。

     class SomeRef
        {
            public Int32 x;
        }
        struct SomeVal
        {
            public Int32 x;
        }
    
    
            static void ValueTypeDemo()
            {
                SomeRef r1 = new SomeRef();
                SomeVal v1 = new SomeVal();
    
                r1.x = 5;
                v1.x = 5;
    
                Console.WriteLine(r1.x);
                Console.WriteLine(v1.x);
    SomeRef r2
    = r1; SomeVal v2 = v1; r1.x = 8; v1.x = 9; Console.WriteLine(v1.x); Console.WriteLine(v2.x); }

    由上例子可以看出,重新赋值后的 v1 值改变,但是v2值并没有改变。

    而 r1,r2 值全部改变,原因在于 r1,r2是引用类型,改变的只是地址的指向,所以当一个地址改变后 另外的地址也跟着指向新的地址。

  • 相关阅读:
    Python Day 29 socket、scoket套接字分类、基于TCP的socket、常见错误
    Python Day 28 网络编程、OSI七层模型、三次握手和四次挥手
    Python Day 27 元类、__inti__方法、__new__方法、__call__方法、单例模式、exec与eval区别、异常处理语法
    get,post区别
    Restful API
    tcp 3次握手四次挥手
    mongodb数据库常用操作的整理
    python装饰器
    python中的*args和** kwargs区别
    Vue插件
  • 原文地址:https://www.cnblogs.com/dragon-L/p/3707106.html
Copyright © 2011-2022 走看看