C#基础(四)(C#预定义值类型和引用类型)

一、预定义类型。

1、值类型和引用类型

C#中的数据类型,可以分为值类型和引用类型,值类型存储在堆栈上,而引用类型存储在托管堆上。

如下代码示例,

int i=10;

int j=i;

ij的值都是10,并且在内存中会有两个地方存储10.

再看下面的代码

 

Code

 

Vector是一个引用类型,引用类型在使用的时候需要new 来实例化一个。这段代码执行后,只有一个Vector对象,x,y都指向包含该对象的内存地址。因为xy存储的都是对象的引用,所以当y改变的时候,x也会改变。所以该程序输出的结果是2050.

       如果变量是一个引用,就可以把其值设置为null,表示不指向任何对象。

       2CTS类型。

       C#的预定义类型并没有内置于语言中,而是内置于.NET Framework中,比如声明一个int类型时,实际上是.NET结构System.Int32的一个实例。这说明,可以把所有的基本数据类型看作是支持某些方法的类。

       3、预定义的值类型

       A、整型

       sbyte 8位有符号的整数,范围从 -128127.

       byte 8位无符号的整数,范围从 0255.

       short16位有符号的整数,范围从 -3276832767

       ushort 16位无符号的整数,范围从065535

       int32位有符号的整数,范围从-21474836482147483647

       uint32位无符号的整数,范围从04294967295

       long64位有符号的整数,范围从-231次方到231次方减1

       ulong64位无符号的整数,范围从0264次方减1

       B、浮点类型。

       float 32位单精度浮点数。

       double64位双精度浮点数。

       如果代码对某个非整数值,如12.3硬编码,则编译器一般假定该变量是double,如果想指定其为float,则可以在后面加上字符f

       Cdecimal类型。

       该类型是一种财务专用数据类型,是128位高精度十进制表示法。

       要把数据指定为decimal类型的,只需在数字后面加上M(或者m)

A、 bool类型。

C#bool类型包含truefalse

B、 字符类型。

也就是char类型,表示一个16位的unicode字符。

char类型的字面量是采用 单引号 括起来的。而不是双引号。双引号括起来的是字符串类型的。

             4、预定义引用类型。

              Aobject类型。

这是C#的基类,所有的类都派生自它。所以,可以使用object引用绑定任何子类型的对象,object类型执行许多基本的一般用途的方法,如 Equals() GetHashCode(),GetType()等,我们需要针对某些方法进行“重写”,这在后面我们将会学习到。

               Bstring类型。

  注意,string类型是属于引用类型。我们来看下面一段代码,在修改一个字符串的时候,实际上是创建了一个新的字符串,而并非修改了原来在字符串。我们来看一个示例:

 

Code

 

 在这个示例中会输出

                       str1="GoSoA.com.cn";

                       str2="GoSoA.com.cn";

                       str1="www.GoSoA.com.cn";

                       str2="GoSoA.com.cn";

                       这和我们所预期的引用类型正好相反,为什么呢?

                       因为当我们用“GoSoA.com.cn”来初始化str1的时候,就在堆上分配了一个

  string对象,当初始化str2的时候,也指向了这个对象。当str1改变的时候,并不是修改了原有的对象,而是新创建了一个对象,但str2还是指向原来的对象,所以,str2的值并未改变。

 

posted on   asp114  阅读(743)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述

导航

< 2008年11月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 1 2 3 4 5 6

统计

点击右上角即可分享
微信分享提示