• 深入.net(数据类型)


    C#究竟为我们提供了哪些“数据类型”供我们使用?这些类型有什么样的“特征”?

    数据类型的分类:

            --- 数据类型是存放数据的容器。那么我们就以它们“存放数据的方式”分类!

                1、值类型:变量中直接存放着“数据”

                2、引用类型:变量中没有存放数据,数据存放在其他地方,而变量中只存放“真实数据的地址”

     

                    
      

     值类型

      
      

    引用类型

      
      

    变量中,存放“数据”

      
      

    变量中,存放“数据的地址”

      
      

                    //整数

      

                sbyte a;    byte aa;  

      

                short b;   ushort bb;

      

                int c;     uint cc;

      

                long d;      ulong dd;

      

                //小数

      

                float e;

      

                double i;

      

                decimal o;

      

                //字符、其他

      

                char o;

      

                bool y;

      

    --------------------------------------------

      

    枚举“enum”、结构“struct”

      
      

      string u;

      

      object i;

      

    --------------------------------------------------

      

    Class ---类

      

    数组 、接口

      
      

    所有的“基础数据”类型,

      

    除了“string”、“object”

      
      

    所有的“自定义数据”类型,

      

    除了“enum”、“struct”

      

     

     

    什么是“结构”struct?

             ----  将类的数据,不在放置“堆”中,而宁可在“栈”中,开辟多个“关联数据空间”来存放!这样的形式我们叫做“结构”(就不在叫做类)。

    ----  与Class内部结构相似(含有“属性”和“方法”),但它是“值类型”,变量中直接保存数据。目的是为了快速的数据访问。【轻量级的类】

            ----- 结构使用的注意事项:

        • 结构中的字段不能够定义得“太庞大”
        • 实例对象少,但访问频繁高,对访问速度有要求【应用场景】
        • 直接将字段对外公开,字段不允许在定义时赋初值(定义)

    使用时,可以直接定义后就使用,而 不用new操作(使用)

        • 在项目中,更多是使用Class,而较少使用Struct 

     

    关于“赋值符号”【=】:

          不论是“值类型”还是“引用类型”,赋值操作都是将“自身的副本”赋值给对方,所不同的是,值类型是“数据副本”,引用类型是“地址副本”!

          但是,上述结论条件是:赋值符号两边的类型一致(值、引用),如果两边类型不一致时,则需要“装、拆箱”操作。

     

     

    装、拆箱:

        •   装箱 :值类型  ----->  引用类型  【1堆中申请空间 2赋值 3取回地址】
        •   拆箱:引用类型  ------->  值类型
        •  隐式装箱、显式拆箱; 先装箱、再拆箱
        • 装拆箱操作能灵活的实现值类型和引用类型的转换;效率低、容易出错(拆箱)

     

         

    关于“方法的参数”:

            ----- 形参:在方法定义时,写在“括号”中的变量,是没有也无法赋值的,就是一个“形式”,称为形参;

                    实参:在方法调用时,写在“括号”中的变量,具有真实的数据,所有叫做实参

           ------ 在程序实现时:【实参  ----> 形参 】进行数据传递时,存在两种方式:

                  方式一:实参将“真实的数据”,传递给形参(方法中),“值方式传递”;

                  (调用方法中对变量的修改,不会影响到原来传入的变量)

                  方式二:实参仅仅将“数据的地址”,传递给形参(方法中),“引用方式传递”

                   (调用方法中对变量的修改,会影响到原来传入的变量)

           ------ 常见的两种传递形式:

                   值方式传递:  当参数的数据类型是“值类型”时

                   引用方式传递:当参数的数据类型是“引用类型”时

                                                  当参数的数据类型是“值类型”时,使用了ref  (来料加工)

                                                  当参数的数据类型是“值类型”时,使用了out (出口)

                                                

     

     

     

     

     

     

     

     

     

     

    小贴士:

            对于我们的应用软件来说:

                    所有的数据都存储“内存”中,计算机将他的内存区域划分成两种“区域”。 

                    一个区域,小访问速度快,由程序自己管理   -----栈

                   一个区域,大访问速度较慢,管理自由度更高 ----堆

                  (程序中所有定义的“变量”,都存储在栈中)

     

           方法中,结果数据的输出:

                    无结果 ---- void;

                    有一个结果   ----- 依据结果的类型定义;

                    有多个关联结果   ----- 专门为它创建一个容器(类、结构);

                    有多个但无关联   ----- 通过out参数;

  • 相关阅读:
    easyUI footer 的格式渲染
    VS常用快捷键(最全)
    vs2008 asp.net “无法连接到ASP.NET Development server”
    Microsoft ReportViewer 控件类型版本兼容问题及解决方法
    提取 Microsoft.ReportViewer等dll
    百度地图根据list经纬度算每个点到剩余点的平均距离、最远距离和最近距离
    求数组的最大值、最小值、平均值
    C#为配置文件加密的实现方法
    去除字符串最后一个逗号
    JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength 属性设置的值
  • 原文地址:https://www.cnblogs.com/why168888/p/4282217.html
Copyright © 2020-2023  润新知