C#的值类型

应用程序总是要处理数据,而现实世界中的数据类型多种多样,我们必须让计算机了解需要处理什么样的数据,以及采用哪种方式进行处理,按什么格式保存数据等等。比如,在编码程序中需要处理单个字符,在定购票系统中需要打印货币金额,在科学运算中不同情况下我们需要不同精度的小数,这些都是不同的数据类型。

其实,任何一个完整的程序都可以看成是一些数据和作用于这些数据上的操作的说明。每一种高级语言都为开发人员提供一组数据类型,不同的语言提供的数据类型不尽相同。

在本书的第一部分,我们为读者简要地介绍了C#语言的主要特点和运行环境,并且创建了第一个简单的C#应用程序。本章将会给你介绍C#的数据类型系统。在这一章中,你将系统地学习C#语言为我们提供的数据类型,以及使用这些数据类型时的要点。

对于程序中的每一个用于保存信息的量,使用时我们都必须声明它的数据类型,以便编译器为它分配内存空间。C#的数据类型可以分为两在部分:值类型和引用类型。

如果你是一名编程新手,本章将是你学习C#的基础,应该牢牢掌握本章提到的各种数据类型。而对于有一定C和C++经验的读者来说,对本章的内容不会感到困难,但在阅读本章和紧接着的几章里,要把注意力集中到文章中C#独有的特点,尤其是与C和C++的区别,这才是关键所在。

4.1 值类型

在具体讲解各种类型之前,我们先提一下变量的概念,在下一章中我们将对变量作进一步的讨论。从用户角度来看,变量就是存储信息的基本单元;从系统角度来看,变量就是计算机内存中的一个存储空间。

下面我们开始介绍值类型。c#的值类型可以分为以下几种:

●简单类型(Simple types)

●结构类型(Struct types)

●枚举类型(Enumeration types)

简单类型,有时人们也称为纯量类型,是直接由一系列元素构成的数据类型。C#语言中为我们提供了一组已经定义的简单类型。从计算机的表示角度来看,这些简单类型可以分为整数类型、布尔类型、字符类型和实数类型,详细描述请访问以下链接:

4.1.1 整数类型

4.1.2 布尔类型

4.1.3 实数类型

4.1.4 字符类型

4.1.5 结构类型

4.1.6 枚举类型

时间: 2024-12-30 09:25:41

C#的值类型的相关文章

.NET中的六个重要概念:栈、堆、值类型、引用类型、装箱和拆箱

内容导读 •概述 •当你声明一个变量背后发生了什么? •堆和栈 •值类型和引用类型 •哪些是值类型,哪些是引用类型? •装箱和拆箱 •装箱和拆箱的性能问题一.概述 本文会阐述六个重要的概念:堆.栈.值类型.引用类型.装箱和拆箱.本文首先会通过阐述当你定义一个变量之后系统内部发生的改变开始讲解,然后将关注点转移到存储双雄:堆和栈.之后,我们会探讨一下值类型和引用类型,并对有关于这两种类型的重要基础内容做一个讲解. 本文会通过一个简单的代码来展示在装箱和拆箱过程中所带来的性能上的影响,请各位仔细阅读

值类型与引用类型(中)

本文将介绍以下内容: 类型的基本概念  值类型深入 引用类型深入 值类型与引用类型的比较及应用    1. 引言 上回[第八回:品味类型---值类型与引用类型(上)-内存有理]的发布,受到大家的不少关注,我们从内存的角度了解了值类型和引用类型的所以然,留下的任务当然是如何应用类型的不同特点在系统设计.性能优化等方面发挥其作用.因此,本回是对上回有力的补充,同时应朋友的希望,我们尽力从内存调试的角度来着眼一些设计的分析,这样就有助于对这一主题进行透彻和全面的理解,当然这也是下一回的重点. 从内存角

C# 引用类型、值类型

CLR支持两种类型:引用类型和值类型,它们的区别是在内存分配方式上的差异:引用类型是从托管堆上分配的:值类型是在线程栈上分配的.而CLR的垃圾回收是针对托管堆的,因此值类型不受垃圾回收器的控制. 在FCL中,所有称为"结构"(struct)的类型都是值类型,所有称为"类"(class)的类型都是引用类型.所有的Struct都直接派生自抽象类System.ValueType,而System.ValueType直接从System.Object派生.所有的枚举都直接从Sy

JScript中值类型的封箱与拆箱

js|jscript JScript中对象的expando属性是对Object,Array等引用类型增加成员的一种重要手段,但这种手段在对值类型时就不行了,比如var str = "string1";str.method1 = function(){//do something}; str.method1();//这里将出错,错误信息(我忘记了)是说str不存在该方法 这样的语句就会运行不了,而在C#编程中值类型存在装箱与拆箱操作来将其转换为引用类型,对此,JScript中也存在值类型

C#高级编程阅读笔记一(关于值类型和引用类型)

笔记|编程|高级 数据在内存中的存储位置,取决于它的数据类型,在C#中,分为值类型和引用类型,值类型的数据存储在内存中的堆栈中,每个变量或程序都有自己的堆栈,不可以共用一个堆栈地址.当数据一个值类型的变量传递到另一个相同类型的变量时,会在堆栈中分配两个不同的地址. 而引用类型的数据存储在内存中的堆中,可以不同的变量或程序共同使用同一个位置的数据.当数据从一个引用类型的变量传递到另一个相同类型的变量时,只是把这个变量的引用地址传递给新的变量,同时引用当前堆中存储的数据. 可以通过实例得到详细结论:

C++/CLI的“值类型的强类型装箱实例”

近来接到几个朋友问Visual C++ 2005 (C++/CLI) Webcast中讲的"值类型的强类型装箱实例"是什么? 讲座比较匆忙,因此对这个技术点只是点了一下,没有详细展开.这里借blog把它展开说一下. 首先来看下面的C#代码: using System; using System.Collections; struct MyClass { public int data; } class Test { public static void Main() { MyClass

实例解析C++/CLI之值类型

值类型是一种轻量级的C++/CLI类机制,非常适合于小型的数据结构,且从语义的角度来看,与数值(Value)类似. 与之相比,引用类型的实例--包括那些声明在堆栈上的,是由垃圾回收器管理的,而值类型的实例却不是.一般来说,一个值类较好的实现应只有一些数据成员,而不需要继承性,这样,在函数传递及返回值.或是赋值操作时,不会带来巨大的数据开销. 值类初印像 请看例1中的Point类,可以通过替换ref为value,来把一个引用类变为值类:与引用类(ref)相似,值类(value)也是一个包含了空格的

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

一.预定义类型. 1.值类型和引用类型 C#中的数据类型,可以分为值类型和引用类型,值类型存储在堆栈上,而引用类型存储在托管堆上. 如下代码示例, int i=10; int j=i; i和j的值都是10,并且在内存中会有两个地方存储10. 再看下面的代码 Vector x=new Vector(); x.Value=20; Vector y=x; Console.WriteLine(y.Value); y.Value=50; Console.WriteLine(x.Value); Vector

c#:创建常量、原子性的值类型

概述 本文是<Effective C#>一书第七节的读书笔记.通过这篇文章,我主要想向大家说明一个我们平时 可能不太会注意到的问题:创建具有常量性和原子性的值类型. 从类型设计谈起 从Class到Struct 假如我们要设计一个存储收信人地址的类型(Type), 我们管这个类型叫 Address.它应该包含这样几 个属性: Province 省 City 市 Zip 邮编 要求对Zip的格式进行控制(必须全为数字,且为6位),大家该如何设计呢?我想很多人会写成这样吧 : public clas