我的游戏盒子

Win10开发入门:C#编程语言基础之数据类型与变量

发表于:2024-04-28 作者:我的游戏盒子
编辑最后更新 2024年04月28日,根据网友们的反馈,在接下来的两周内, IT之家 将对C#语言的基础知识进行介绍(每天一个知识点),以便你能够基本读懂项目中的C#代码。但需要说明的是,文章能够容纳的内容是极其有限的,只能提供一个学习的思路,无法涉及到C#语言的方方面面,特别是很多高

根据网友们的反馈,在接下来的两周内,IT之家将对C#语言的基础知识进行介绍(每天一个知识点),以便你能够基本读懂项目中的C#代码。但需要说明的是,文章能够容纳的内容是极其有限的,只能提供一个学习的思路,无法涉及到C#语言的方方面面,特别是很多高级主题,你需要借助其他参考书籍来学习和掌握。

Win10开发入门:C#编程语言基础之数据类型与变量

计算机程序往往需要处理各种各样的数据,因此每一套编程语言都需要有一套完善的机制来表示这些数据,这些数据可能是一串字符(字符串)、数字等,而数字又包括整数型、浮点型等。在有些编程语言中,定义数据时并不严格区分数据的类型,在程序运行过程中,数据类型可根据实际情况发生变化,这种语言称为弱类型语言,比如PHP、JavaScript这类脚本语言。而C#则是一种强类型语言,它对不同的数据类型都有不同的定义方法。数据类型又分为基本数据类型和自定义数据类型,后者是在前者基础上由用户自定义的一种数据类型,比如我们之前讨论过的类。

基本数据类型

• 整数类型

在C#中共有8种整数类型,分别为sbyte(有符号8位)、byte(无符号8位)、short(有符号16位)、ushort(无符号16位)、int(有符号32位)、uint(无符号32位)、long(有符号64位)、ulong(无符号64位)。

这里的位数是指二进制位数,对于有符号整形,最高位为表示正负的符号位,用n表示数据二进制位数,那么其表示范围为-2^(n-1)~ 2^(n-1)-1,比如32位有符号整型int的表示范围为-2147483648~2147483647。对于无符号整型,表示范围则为0~2^n-1,比如32位无符号整型uint表示范围为0~4294967295。

至于为何表示范围的最大值和最小值绝对值大小不一,这里涉及到原码、反码、补码相关的知识,请大家自行查阅资料进行学习。

• 浮点类型

浮点数用于表示非整数数字,它在计算机中的表示是比较复杂的,这里我们只需要简单知道C#中支持两种浮点数即可,分别为float和double,前者为32位,后者为64位。

除此之外,还有一种特殊的浮点类型,即decimal类型,它用128位进行表示,较适合大而精确的金融类计算。

• 布尔类型

布尔类型数据bool用于表示真假两种状态,分别为true和false,常常用在条件判断中。

• 字符和字符串

字符类型(char)用来表示Unicode字符,而零个或多个字符组成的有限序列则称为字符串(string)。

变量的定义和赋值

有了数据类型我们就可以在程序中定义所需的数据,定义数据的过程称之为变量的声明,变量被声明之后便可对其进行赋值。比如声明一个字符串类型变量,代码如下:

string name;

其中string为数据类型,包括上文介绍过的其他表示数据类型的单词,它们在C#语言中为专用单词,称之为关键字。后面的name则是我们自定义的用于表示一个字符串变量的名称。

声明变量之后就可以对其进行赋值,赋值操作代码如下所示:

name = "DouDou";

类型的分类

C#中的数据类型可分为值类型引用类型两类,主要根据它们在内存中的存储和复制的方式进行区别。在以上介绍的数据类型中,只有string类型为引用类型。

举个例子,我们定义两个int变量:

int a = 1;

int b = a;

在内存中a和b分别占用不同的内存位置,且更改其中一个变量的值对另一个不会造成影响。值类型变量本身存储数据值。而引用类型则不同,类似地定义两个字符串变量:

string c = "Doudou";

string d = c;

在内存中,c和d虽然是两个字符串变量,但它们都指向内存中同一个位置,实际上a和b两个变量本身存储的是内存中的位置,而不是数据本身,要访问数据需要先从变量中读取内存地址,才后再根据内存地址找到数据内容。

最简单的C#程序及程序编译

下面我们就来看一段最简单的完整的C#程序代码:

class HelloWorld

{

static void Main()

{

System.Console.WriteLine("Hello World!");

}

}

在之前的文章中我们已经初步接触了类(class)的概念。C #是一门完全面向对象的编程语言,所有的语句都放在类的内部,以上代码即定义了一个名为HelloWorld的类。与C++程序一样,C#也有入口点函数,即程序开始运行的地方,在以上代码中程序的入口位置就是HelloWorld类中的Main方法,并且这个方法必须为静态(static)方法。静态方法的特点是,不需要对类进行实例化就可以直接被调用执行。在这个最简单的程序中,在Main方法中我们调用System.Console.WriteLine方法在控制台输出了一串字符Hello World!,并且这一串字符占据一整行的位置。

下面我们利用前面已经学到的知识对这个简单的程序进行修改,在控制台中输出字符串变量对应的值,修改后的代码如下:

class HelloWorld

{

static void Main()

{

string a = "Doudou";

string b = a;

System.Console.WriteLine(a);

System.Console.WriteLine(b);

b = "Hi";

System.Console.WriteLine(a);

System.Console.WriteLine(b);

}

}

下面我们就来编译并运行这个程序,首先我们在D盘新建一个文本文档,将以上代码复制到文本文档中,保存并重命名为HelloWorld.cs。然后我们使用微软的Microsoft .NET编译器对程序进行编译。如果你已经安装了Visual Studio,在开始菜单中找到“VS2015开发人员命令提示工具”,打开如下图,依次执行三条命令:

Win10开发入门:C#编程语言基础之数据类型与变量

上图三条命令解释:

• 通过cd /d d:\命令可将命令提示符的当前路径定位到D:\

• 通过csc.exe 源代码文件名命令可执行程序的编译

• 编译后的可执行文件名称与源代码文件名称(除后缀名外)一致,并且保存在源代码文件同目录下,因此直接输入HelloWorld.exe即可执行程序。

最后就可以看到程序执行结果:一共输出了四行字符串,前两行分别为a和b初次赋值后所引用字符串的值,最后两行为对b进行重新赋值后a和b分别所引用字符串的值。

也许你会奇怪,既然a和b都是引用类型数据,保存的是数据在内存中的位置,那么对b变量进行修改后,为什么a的值没有跟随变动呢?这是因为在C#中字符串是一种特殊的引用类型数据,字符串在内存中是不可变的。当你改变字符串变量的值时,实际上是在内存中重新创建了一个新的字符串,而变量的值则被重新指向了新的字符串内存位置,因此字符串变量在使用时表现出与值类型数据相似的特性。

数组

最后我们再来了解一下数组。数组是编程语言中必须掌握的知识点,它是一种特殊的变量,也是引用类型数据,用来存储同一种类型的多个数据的集合,比如将多个人的名字存储在同一个变量中。

数组变量的声明格式:先指定数组元素数据类型,后面跟一对方括号,然后是变量名。比如声明一个字符串数组,然后对其进行赋值:

string[] names;

names = new string[]{"aa", "bb", "cc"};

在使用数组中的数据(即访问数组)时通过方括号索引来实现,比如,我们从以上数组中取出第3个数据(数组的索引从0开始,因此第三个数据索引为2),将其复制给一个新的字符串变量,代码如下:

string name = names[2];

本文对C#中的数据类型、最简单的C#程序构成以及程序的编译进行了介绍,最后又认识了一下数组这种特殊的变量。下次IT之家将对C#中的操作符、控制流程语句以及方法进行介绍。在这之前网友们需要针对以上内容广泛查阅相关资料进行加强学习。

IT之家Win10开发入门系列文章:

IT之家学院:跟我一起学Win10 UWP应用开发(开篇)

Win10开发入门:UWP通用应用程序项目结构分析

关注Windows10,锁定Win10之家(http://win10.ithome.com

2016-04-02 13:40:07
0