深入.net(数据类型)

Java培训、Android培训、iOS培训、.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参数;

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。