C# 值类型与引用类型的异同

int,bool,decimal等为值类型

List,Stream等为引用类型

用等号设置一个值类型变量等于另一个变量时,会完成复制,之后这两个变量相互之间没有任何影响;

对引用使用等号时,这两个引用就会指向同一个对象

对于值类型和引用类型,变量声明和复制都是一样的。

int howMany = 25;

bool Scary = true;

List<double> temperatures = new List<double>();

int和bool为值类型,List为引用类型,他们都以相同的方式初始化

但一旦开始赋值就不同了。

值类型的赋值:

int fifteenMore = howMany;

fifteenMore += 15;

Console.WriteLine("howMany has {0},fifteenMore has {1}",howMany,fifteenMore);

输出:howMany has 25,fifteenMore has 40

引用类型赋值:

temperatures.Add(56.5D);

temperatures.Add(27.4D);

List<double> differentList = temperatures;

differentList.Add(62.9D);

Cosole.WriteLine("temperature has {0},differentlist has {1}",temperature.Count(),differentList.Count());

输出:temperatures has 3,differentList has 3

时间: 2024-08-29 15:34:29

C# 值类型与引用类型的异同的相关文章

值类型和引用类型的区别?

1.值类型和引用类型的区别? 1.将一个值类型变量赋给另一个值类型变量时,将复制包含的值.引用类型变量的赋值只复制对对象的引用(快捷方式),而不复制对象本身. 2.值类型不可能派生出新的类型:所有的值类型均隐式派生自 System.ValueType.但与引用类型相同的是,结构也可以实现接口. 3.值类型不可能包含 null 值:然而,可空类型功能允许将 null 赋给值类型. 4.每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值. 2.堆和栈的区别? 栈是编译期间就分配好的内存空间,

修饰符|值类型、引用类型|List|索引器

1.简述private.protected.public.internal 修饰符的访问权限 private:私有成员,在类的内部可以访问 protected:保护成员,在该类内部和继承类中可以访问 public:公共成员.无访问限制 internal:当前程序集可以访问 ---延伸 类的实例化,(如何使用类?),用关键字new 类 实例名=new 类(): 字段,方法.属性都类的成员:member 都要加访问级别? 访问级别的用处在于控制成员在哪些地方可以被访问,达到面向对象中"封装"

定义类+类实例化+属性+构造函数+匿名类型var+堆与栈+GC回收机制+值类型与引用类型

为了让编程更加清晰,把程序中的功能进行模块化划分,每个模块提供特定的功能,而且每个模块都是孤立的,这种模块化编程提供了非常大的多样性,大大增加了重用代码的机会. 面向对象编程也叫做OOP编程 简单来说面向对象编程就是结构化编程,对程序中的变量结构划分,让编程更清晰. 类的概念: 类实际上是创建对象的模板,每个对象都包含数据,并提供了处理和访问数据的方法. 类定义了类的每个对象(称为实例)可以包含什么数据和功能. 类中的数据和函数称为类的成员:数据成员        函数成员 数据成员: 数据成员

Java值类型和引用类型

[定义] 引用类型表示你操作的数据是同一个,也就是说当你传一个参数给另一个方法时,你在另一个方法中改变这个变量的值, 那么调用这个方法是传入的变量的值也将改变.值类型表示复制一个当前变量传给方法, 当你在这个方法中改变这个变量的值时,最初生命的变量的值不会变.通俗说法: 值类型就是现金,要用直接用:引用类型是存折,要用还得先去银行取现.----(摘自网上) [值类型] 也就是基本数据类型 基本数据类型常被称为四类八种 四类: 1,整型 2,浮点型 3,字符型4,逻辑型 八种: 1,整型3种 by

java 值类型和引用类型的区别

1. Java中值类型和引用类型的不同? [定义] 引用类型表示你操作的数据是同一个,也就是说当你传一个参数给另一个方法时,你在另一个方法中改变这个变量的值, 那么调用这个方法是传入的变量的值也将改变.值类型表示复制一个当前变量传给方法, 当你在这个方法中改变这个变量的值时,最初生命的变量的值不会变.通俗说法: 值类型就是现金,要用直接用:引用类型是存折,要用还得先去银行取现.----(摘自网上) [值类型] 也就是基本数据类型 基本数据类型常被称为四类八种 四类: 1,整型 2,浮点型 3,字

c# 值类型与引用类型 值传递与引用传递

值类型与引用类型: 值类型 :1.值类型大小固定.存储在栈上.  2.不能继承,只能实现接口 3.派生自valuetype int double char float byte bool enum struct decimal 引用类型:1.在栈上存储了一个地址实际存储在堆中,大小不固定. 2.数组.类.接口.委托 string 数组 类 接口 委托 值传递与引用传递: 值类型按值传递.值类型按引用传递.引用类型按值传递.引用类型按引用传递. 值传递:默认传递都是值传递 ,把栈中内容拷贝一份引用

值类型和引用类型的区别

数据项的类型定义了存储数据需要的内存大小,组成该类型的数据成员以及该类型能执行的函数.类型还决了对象在内存中的存储位置-栈或堆. 类型被分为:值类型和引用类型,这两种类型的对象在内存中的存储方式不同.值类型只需要一段单独的内存,用于存储实际的数据,引用类型需要两段内存:第一段存储实际的数据,它总是位于堆中,第二段是一个引用(即内存地址,不懂是不是就是直接寻址),指向数据在堆中的存放位置. 如果数据不是其他类型的成员,是独立的,比如方法代码块声明的临时变量int age ;如果是某一类型的成员,,

C#中值类型和引用类型

本文将介绍C#类型系统中的值类型和引用类型,以及两者之间的一些区别.同时,还会介绍一下装箱和拆箱操作. 值类型和引用类型 首先,我们看看在C#中哪些类型是值类型,哪些类型是引用类型. 值类型: 基础数据类型(string类型除外):包括整型.浮点型.十进制型.布尔型. 整型(sbyte.byte.char.short.ushort.int.uint.long.ulong ) 浮点型(float 和 double ) 十进制型(decimal ) 布尔型(bool ) 结构类型(struct) 枚

04.C#类型系统、值类型和引用类型(二章2.2-2.3)

今天要写的东西都是书中一些概念性的东西,就当抄笔记,以提问对话的方式将其写出来吧,说不定以后面试能有点谈资~~~ Q1.C#1系统类型包含哪三点特性? A1.C#1类型系统是静态的.显式的和安全的. Q2.为什么称为静态类型? A2.静态类型是用来描述表达式在编译时的类型,当声明一个类型的变量时,不能将变量指向其它类型的对象. Q3.显式类型和隐式类型的区别? A3.显式类型和隐式类型只有静态类型中的语言才有意义.显式类型需要显式声明一个变量的类型,而隐式类型则将类型的判断责任推给编译器,但是在