深入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[] {,};//张浩的身高和体重信息
int[] infoli=infozhang;//数值引用赋值7
Console.WritLine("去年--张浩的身高{0},体重{1}",infozhong[],infozhong[]);
Console.WritLine("去年--李明的身高{0},体重{1}",infoli[],infoli[]);
infoli[]=;
infoli[]=;
Console.WritLine("今年--张浩的身高{0},体重{1}",infozhong[],infozhong[]);
Console.WritLine("今年--李明的身高{0},体重{1}",infoli[],infoli[]);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关键字
具有较快的数据提取速度
结构中有字段,也可以有方法(字段不可以直接赋初始值)

深入C#.NET数据类型的更多相关文章

  1. JavaScript 中的数据类型

    Javascript中的数据类型有以下几种情况: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Function,Date,Ar ...

  2. JS 判断数据类型的三种方法

    说到数据类型,我们先理一下JavaScript中常见的几种数据类型: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Functi ...

  3. Python高手之路【二】python基本数据类型

    一:数字 int int(整型): 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位系统上,整数的位数为64位,取值 ...

  4. UniqueIdentifier 数据类型 和 GUID 生成函数

    UniqueIdentifier 数据类型用于存储GUID的值,占用16Byte. SQL Server将UniqueIdentifier存储为16字节的二进制数值,Binary(16),按照特定的格 ...

  5. SQL Server常见数据类型介绍

    数据表是由多个列组成,创建表时必须明确每个列的数据类型,以下列举SQL Server常见数据类型的使用规则,方便查阅. 1.整数类型 int 存储范围是-2,147,483,648到2,147,483 ...

  6. 由js apply与call方法想到的js数据类型(原始类型和引用类型)

    原文地址:由js apply与call方法想到的js数据类型(原始类型和引用类型) js的call方法与apply方法的区别在于第二个参数的不同,他们都有2个参数,第一个为对象(即需要用对象a继承b, ...

  7. python 数据类型 ----字典

    字典由一对key:value 组成的 python中常用且重量级的数据类型 1. key , keys, values 字典由一对key:value 组成的 python中常用且重量级的数据类型 1. ...

  8. SQL数据类型

    1.Character 字符串: 数据类型 描述 存储 char(n) 固定长度的字符串.最多8,000个字符. n varchar(n) 可变长度的字符串.最多8,000个字符.   varchar ...

  9. 跟着老男孩教育学Python开发【第二篇】:Python基本数据类型

    运算符 设定:a=10,b=20 . 算数运算 2.比较运算 3.赋值运算 4.逻辑运算 5.成员运算 基本数据类型 1.数字 int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**3 ...

  10. 我的MYSQL学习心得(二) 数据类型宽度

    我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

随机推荐

  1. Hibernate学习之路-- -映射 继承关系(subclass , joined-subclass,union-subclass )

    1.继承映射 举例:对于面向对象的程序设计语言而言,继承和多态是两个最基本的概念.Hibernate 的继承映射可以理解持久化类之间的继承关系.例如:人和学生之间的关系.学生继承了人,可以认为学生是一 ...

  2. mybatis中使用if标签比较两个字符串是否相等

    <!-- 此处使用if比较是否相等 --> 范例一: <select id="findClientIds" parameterType="map&quo ...

  3. 网页设计——2. html入门

    开始正式的课程讲解了,首先来看看课程体系: Java EE(java 企业应用程序版本) java2 有三个版本:J2 SE(标准版),J2 EE(企业版).J2 ME(微缩版). 我们要掌握J2EE ...

  4. webpack入门之打包html,css,js,img(一)

    webpack到底是什么,网上一大堆介绍的东西,越看越不知道说的什么,所以今天打算自己来记录一下这段时间学习webpack的成果, webpack就是打包文件用的,html,css,js,img,为什 ...

  5. java 内部类 嵌套类

    .markdown-body { color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI" ...

  6. ExtJs 带参数的MVC

    题记:研究使用ext两个星期了,从痛苦中逐渐走向明朗. 展示列表的子列表的数据时需要将当前的数据传给下一个mvc. 比如用户列表,点击一个用户查看该用户的日志列表. 首先是controller,放一个 ...

  7. PHP+Apache怎样监控多个port和配置多网站

    配置httpd.conf 监听多个port # Listen: Allows you to bind Apache to specific IP addresses and/or # ports, i ...

  8. 以pfile或者spfile启动时show parameter pfile的不同结果

    普通启动: SQL> show parameter pfile NAME TYPE VALUE ------------------------------------ ----------- ...

  9. css怎样让背景充满整个屏幕

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  10. IntelliJ IDEA创建java项目

    IntelliJ IDEA创建java项目 进入到IntelliJ IDEA启动界面,点击Create New Project 2.这样就进入到了创建项目页面,这里可以创建好多项目,这里我们以java ...