zoukankan      html  css  js  c++  java
  • 深入C#.NET数据类型

                               

                                                                                                                                       深入C#数据类型

    --不同类型的参数传递使用值传递,在方法中对参数的更改在调用后不能保留。使用ref方式传递,可以保留对参数值的更改。 ---值方式参数传递和引用方式传递使用值方式(不用ref修饰)传递值类型参数时,参数在方法中的修改不会保留。使用值方式(不用ref修饰)引用类型参数时,参数在方法中的修改会保留。使用引用方式(不用ref修饰)传递值类型和引用类型参数时,参数在方法中的修改都会保留。


    数据类型按存储方式可分为两类:值类型(栈)和引类型(堆)
    值类型:不同的变量会分配不同的存储空间
    存储空间存储的是该变量的值
    改变一个变量值不会影响另一个变量值
    引用类型:赋值是把原对象引用传递给另一个引用
    两个引用指向同一块内存空间
    结构的特点
    1值类型

    2具有较快数据提取速度(结构中可以有字段也可以有方法)
    当对象需要较少字段表示时,可以选用结构
    结构是值类型,数据提取速度快

    但是频繁的赋值操作会占有较大的空间,在开发中多数情况下定义为类
    值类型和引用类型之间的转换
               装箱
    值类型 ------> 引用类型
          <------
           拆箱
    在实际开发中应该减少不必要的装箱和拆箱
    因为二者的存储方式不同,转换时性能损失较大
    不加ref传递参数,值传递,传递的是副本,不会改变原值
    加ref把值类型按引用传递,传递的是引用地址,会改变原值
    使用值传递,在方法中对参数值得更改在调用后不能保留;使用ref方式传递,可以将对参数值更改保留

    值类型和引用类型.C#常用数据类型          

    java                                      C#整形        

    int                                        int浮点型      

    float           float双精度行

    double          double字符串        

    Strinng                      string布尔类       

    boolean          bool枚举类       

    enum           enum

    --值类型源于System.ValueType家族,每个值类型的对象都有一个独立的内存区域用于保存自己的值,值类型数据所在的内存区域称为栈(Stack)。只要在代码中修改它,就会在它的内存区域保存这个值。小结对值类型,不同的变量会分配不同的存储空间,并且存储空间中的存储的是改变量的值。赋值操作传递值的是变量的值,改变一个变量的值不会影响另一个变量的值。--应用类型源于System.Object家族在C#中引用类型主要包括数值,类的接口等。

    示例--
    classprogram{staticvoidMain(string[] args){5int[] infozhang =newint[] {170,60};//张浩的身高和体重信息
    int[] infoli=infozhang;//数值引用赋值7
    Console.WritLine("去年--张浩的身高{0},体重{1}",infozhong[0],infozhong[1]);
    Console.WritLine("去年--李明的身高{0},体重{1}",infoli[0],infoli[1]);
    infoli[0]=180;
    infoli[1]=70;
    Console.WritLine("今年--张浩的身高{0},体重{1}",infozhong[0],infozhong[1]);
    Console.WritLine("今年--李明的身高{0},体重{1}",infoli[0],infoli[1]);13Console.ReadLine();}
    
    }

     
    数组复制可以利用循环实现,对于两个数组arry1和arry2(arry2的长度不小于arry1的长度)将数组arry1中元素的值复制到arry2中。
    --细分值类型和引用类型值类型
    --基本数据类型:int 长度型:long 浮点型: float double char bool枚举类:enum结构类:struct引用类型--类:基类:System.Object  字符串:string  自定义类:class接口:interface数组:int [] ,string[]
     ---结构定义:
    访问修饰符 struct 结构名{   //结构体}
    结构的定义有以下特点--
    结构中可以有字段,也可以有数据--定义时,结构中的字段不能被赋初值结构的使用可以不用new 直接定义对象即可声明结构对象后,必须给结构的成员赋初值-------装箱和拆箱
     
     
     
    总结:
    使用值传递时,(不用ref修饰)传递值类型参数时,参数在方法中的修改不会保留;
    使用值传递时,(不用ref修饰)传递引用类型参数时,参数在方法中的修改会保留;
    使用引用方式(不用ref修饰)传递值类型参数时或者传递引用类型参数时,参数在方法中的修改都会保留;
    不加ref传递参数,值传递,引用传递的是副本,不会改变原值,加ref,把值类型按照引用传递,传递的是引用地址,会改变原值
    值类型======》引用类型----------装箱
    引用类型=====》值传递--------拆箱
    结构体struct的特点:
    值类型数据,不用new关键字
    具有较快的数据提取速度
    结构中有字段,也可以有方法(字段不可以直接赋初始值)
  • 相关阅读:
    PDF文件中的Form保存问题
    Understanding IP Fragmentation
    tcp ip guide IPsec IKE
    Windows安全事件日志中的事件编号与描述
    Cisco PIX fix up and Juniper firewall FTP ALG
    很好的IPSec介绍,详细解释了IKE协商的2个阶段的作用
    virtualbox 下运行Ubuntu 8.10的分辨率和guest additions的问题。
    Fixing the ‘Do you want to display nonsecure items’ message
    windows xp 开始菜单里面所有项目右键不起作用。
    HP backup and recovery manager
  • 原文地址:https://www.cnblogs.com/3020815dzq/p/8166095.html
Copyright © 2011-2022 走看看