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

    数据类型按存储方式可分为两类:值类型和引用类型.

    1值类型

    值类型源于System.ValueType家族,每个值类型的对象都有一个独立的内存区域用于保存自己的值,

    值类型数据所在的内存区域成为栈(Stack),只要代码中修改它,就会在它的区域内保存这个值,值类型主要包括基本数据类型和枚举类型等.

    对于值类型,不同的变量会分配不同的存储空间,并且存储空间中存储的是该变量的值,赋值操作传递的是变量的值,改变一个变量的值不会影响另一个变量的值.

    2.引用类型

    引用类型源于System.Object家族,在C#中引用类型主要包括数组,类和接口等.

    对于引用类型,赋值是把原对象的引用传递给另一个引用,对数组而言,当一个数组引用赋值给另一个数组引用后,这两个引用指向同一个数组,也就是指向同一块

    存储空间.

    细分值类型和引用类型

    值类型:1. 基本数据类型  2.枚举类型   3.结构类型  

    引用类型: 1.类   2.接口   3.数组  

    结构

    1.结构的定义   

    访问修饰符   struct  结构名

    {

         //结构体

    结构的定义有以下特点:

    1.结构中可以有字段,也可以有方法

    2.定义时,结构中的字段不能被赋初值

    结构的使用

    1.可以不用new

    2.声明结构的对象后,必须给结构的成员赋初值.

    装箱和拆箱

    1 int i = 123;
    2 object o = i;      //装箱:值类型转换为引用类型
    3 int j=(int)o;     //拆箱:引用类型转换为值类型

     不同类型的参数传递

    1.怎样区分是值传递还是引用传递?

    判断依据是有没有ref.

    2.使用值方式(不用ref修饰)传递值类型参数时,参数在方法中的修改不会保留.

      使用值方式(不用ref修饰)传递引用类型参数时,参数在方法中的修改会保留

      使用引用方式(用ref修饰)传递值类型或引用类型参数时,参数在方法中的修改都会保留

  • 相关阅读:
    mysql主从复制的一些东西的整理
    (转载)[我只是认真]聊聊工匠情怀
    Redis运维的一些常用的命令总结
    关于mysql和Apache以及nginx的监控脚本怎么写会比较好的记录
    使用linux的nc来进行文件的传输
    nc检测端口是否正常服务的一个命令
    二维数组去除重复值和array_unique函数
    MySQL的备份的一些策略和方法的总结
    一些容易忘记的小知识点
    关于php多线程的记录
  • 原文地址:https://www.cnblogs.com/liutao1122/p/7001775.html
Copyright © 2011-2022 走看看