您的位置: 网站首页 > 程序开发 > C#程序设计 > 第2章 C#程序设计基础 > 【2.2 变量和常量】

2.2 变量和常量

 

2.2  变量和常量

C#中的数据类型可以分为常量和变量。顾名思义,变量即可以变化的量,而常量则是指不变的量。

2.2.1  命名变量

在数学中,可以用y=x+1表示变量yx的关系。C#中变量的含义和数学中类似,如可以在C#中声明两个变量xy分别表示上述函数表达式中的xy。在C#中为了保证变量的规范,对变量的命名采取了一定的限制,其规则如下:

·    标识符的第一个字符必须是字母、下划线“_”或“@”。

·    除第一个字符外,后面的字符可以是字母、下划线或数字。

·    标识符的名称不能使用C#的关键字。

下面针对上述3条规则列出一些规范和不规范的变量名以供参考。

规范的变量名如下所述。

·    myA(大小写组合)。

·    MY_a(大小写组合加连字符)。

·    _MyA15(大小写加数字组合,连字符作为起始字符)。

不规范的变量名如下所述。

·    5pen(数字作为起始字符)。

·    float(关键字作为标识符)。

·    my-a(连字符“-”)。

其中,第3条规则中提到的关键字是指在C#中被保留作为它用的一些字符,这些字符一般都比较通用。在进行变量的命名时,不能使用与关键字完全相同的字符。C#中的关键字列表如表2-1所示。

2-1  C#关键字列表

abstract

event

new

Struct

as

explicit

null

switch

base

extern

object

this

bool

false

operator

throw

break

finally

out

true

byte

fixed

override

try

case

float

params

typeof

catch

for

private

uint

char

foreach

protected

ulong

checked

goto

public

unchecked

class

if

readonly

unsafe

const

implicit

ref

ushort

continue

in

return

using

decimal

int

sbyte

virtual

default

interface

sealed

volatile

delegate

internal

short

void

do

is

sizeof

while

double

lock

stackalloc

 

else

long

static

 

enum

namespace

string

 

在对变量进行命名时需注意表2-1中列出的关键字。在命名变量时还需要注意的一点是C#中的变量的大小写问题,即只有大小写不同的两个变量命名也是不同的。例如,变量MyData和变量MYDATA是不同的两个变量。

2.2.2  声明和使用变量

对上一节中介绍的变量命名规则有了一定的了解后,就可以进行变量的声明和使用了。下面仍以函数y=x+1为例说明变量的声明和使用。设yx都为整数,在C#中定义yx的方法如下:

int x;

int y;

上述两条语句声明了两个整数类型的变量xy。这时,C#为这两个整数分配了存储空间。这个存储空间中只能存储整数。一种简单声明多个变量的方法如下:

int x ,y;

该语句同时声明了两个变量。此时,该存储空间中还没有任何数值。为变量xy赋值的语句如下:

x = 1;

y = 2;

此时,变量xy中分别存储了12两个整数。同样,可以在声明变量xy的时候就对变量xy赋值,这样做可以减少代码的行数。该方法代码如下:

int x = 1

int y = 2;

变量的特点即变量的值是可以改变的,可以在需要时更改变量的值,如可以用如下的代码改变变量xy的值:

x = 23;

y = 56;

下面介绍一个小实例,使用第1章介绍的输出语句输出变量的值。

1.目的说明

创建一个Windows控制台应用程序,并在控制台中输出用户定义变量的值。

2.实现步骤

1)启动Visual Studio 2005

2)选择“文件”→“新建”→“项目”命令,打开“新建项目”对话框。

3)在“项目类型”树形列表中选择Visual C#Windows选项后,在“模板”列表中选择“控制台应用程序”选项。

4)在“名称”文本框中输入项目的名称,此处为“OutputVar”。

5)单击“确定”按钮,创建项目。

6Visual Studio 2005已经默认添加了几个文件,并自动打开其中的一个文件Program.cs。修改该文件中的Main方法内容如下:

static void Main(string[] args)

{

    int x;

    int y;

    x = 10;

    y = 20;

    Console.WriteLine("x的值为:{0}", x);

    Console.WriteLine("y的值为:{0}", y);

}

3.运行结果

Ctrl+F5组合键运行程序,运行结果如图2-4所示。按任意键可退出程序。

2-4  运行结果

4.代码分析

1Console.WriteLine

15行和第16行中的两条语句包含了Console.WriteLine的一种新的使用方法。第15行代码中的“{0}”在输出时由x替换,第16行代码中的“{0}”在输出时由y替换,即Console.WriteLine方法中在引号中的内容除原样输出外,“{0}”将被逗号后面的第一个参数的值所替代。

2int

int表示整数类型,C#中除整数类型外还默认支持许多其他的类型,如表2-2所示。

2-2  C#值类型列表

类型取值范围

System.Byte

byte

0255

System.SByte

sbyte

-128127

续上表

类型取值范围

System.Char

char

065 535

System.Decimal

decimal

-79 228 162 514 264 337 593 543 950 33679 228 162 514 264 337 593 543 950 335

System.Double

double

-1.797 693 134 862 32e3081.797 693 134 862 32e308

System.Single

float

-3.402 823 47E+383.402 823 47E+38

System.Int16

short

-32 76832 767

System.Uint16

ushort

065 535

System.Int32

int

-2 147 483 6482 147 483 647

System.UInt32

uint

04 294 967 295

System.Int64

long

-9 223 372 036 854 775 8089 223 372 036 854 775 807

System.UInt64

ulong

018 446 744 073 709 551 615

System.Boolean

bool

TrueFalse

其中,floatdoubledecimal类型表示数值类型变量中的非整型数值,如3.141 592 6可以用非整型变量来表示。将上述实例中的Main方法修改如下,便可以输出非整型的数值:

static void Main(string[] args)

{

    double x;

    double y;

    x = 3.1415926;

    y = 1.414;

    Console.WriteLine("x的值为:{0}", x);

    Console.WriteLine("y的值为:{0}", y);

}

由此可见,Console.WriteLine方法支持多种类型的变量输出。表2-2的末尾一行列除了bool型变量,该变量用于描述真/假、是/否等含义。

C#的引用类型变量中有一种string类型变量,被称为字符串,它具有和值类型相同的声明方式。字符串是由一系列的字符构成的。第1章中的“你好,C#!”即是一个字符串,但实例中并没有将其用一个变量来表示。

下面介绍一个实例,输出字符串类型的变量。

1.目的说明

创建一个Windows控制台应用程序,并在控制台中输出用户定义字符串的值。

2.实现步骤

1)启动Visual Studio 2005

2)选择“文件”→“新建”→“项目”命令,打开“新建项目”对话框。

3)在“项目类型”树形列表中选择Visual C#Windows选项后,在“模板”列表中选择“控制台应用程序”选项。

4)在“名称”文本框中输入项目的名称,此处为“OutputString”。

5)单击“确定”按钮,创建项目。

6Visual Studio 2005已经默认添加了几个文件,并自动打开其中的一个文件Pro-

gram.cs。修改该文件中的Main方法内容如下:

static void Main(string[] args)

{

    //声明一个字符串变量,并对其赋值。

    string x;

    x = "这是一个字符串!";

 

    //输出该字符串变量。

    Console.WriteLine(x);        }

3.运行结果

Ctrl+F5组合键运行程序,运行结果如图2-5所示。按任意键可退出程序。

2-5  运行结果

4.代码分析

代码中声明了一个字符串类型的变量x,该变量随后被赋值为“这是一个字符串!”。最后直接使用Console.WriteLine方法输出了该变量x。可以看到控制台中输出的是变量x所代表的字符串,即“这是一个字符串!”。

2.2.3  类型转换

C#中存在许多变量类型。在实际应用中,经常需要对这些不同类型的数值进行转换,这其中包括隐式转换和显式转换。隐式转换即不是由程序开发人员明确指明如何进行转换,而是由C#进行自动的转换。如有一个整型的数值2,另有一个浮点型的数值2.3,使用隐式转换可以方便地将这两个数值进行各种运算。C#中可以进行的隐式转换如表2-3所示。

2-3  C#值类型列表

原始数值类型

可转化目标数值类型

sbyte

shortintlongfloatdoubledecimal

byte

shortushortintuintlongulongfloatdoubledecimal

short

intlongfloatdoubledecimal

ushort

intuintlongulongfloatdoubledecimal

int

longfloatdoubledecimal

uint

longulongfloatdoubledecimal

long

floatdoubledecimal

char

ushortintuintlongulongfloatdoubledecimal

float

double

ulong

floatdoubledecimal

由上表中可以看到,C#中隐式转换的基本规则是由精度较低的类型转换为精度较高的类型。下面介绍一个简单的实例,演示C#中隐式转换的效果。

1.目的说明

创建一个Windows控制台应用程序,演示C#中隐式转换的效果

2.实现步骤

1)启动Visual Studio 2005

2)选择“文件”→“新建”→“项目”命令,打开“新建项目”对话框。

3)在“项目类型”树形列表中选择Visual C#Windows选项后,在“模板”列表中选择“控制台应用程序”选项。

4)在“名称”文本框中输入项目的名称,此处为“Convert1”。

5)单击“确定”按钮,创建项目。

6Visual Studio 2005已经默认添加了几个文件,并自动打开其中的一个文件Program.cs。修改该文件中的Main方法内容如下:

static void Main(string[] args)

{

    //分别定义两个整型变量xy

    int x = 4;

    int y = 3;

 

    //double类型变量z储存xy的和

    double z = x + y;

   

    //输出z的值

    Console.WriteLine("x+y的和为{0}", z);

}

3.运行结果

Ctrl+F5组合键运行程序,运行结果如图2-6所示。按任意键可退出程序。

2-6  运行结果

4.代码分析

代码中整型变量xy相加之后的结果为7,仍为整型数值。将其存储在double类型的变量z中时,C#自动将其变换为double类型的数值7,并不需要显式说明。

C#中还有一种类型转换方法——显式转换,即明确地给出目标类型的C#关键字。下面仍然用一个实例进行讲解。

1.目的说明

创建一个Windows控制台应用程序,演示C#中显式转换的效果

2.实现步骤

1)启动Visual Studio 2005

2)选择“文件”→“新建”→“项目”命令,打开“新建项目”对话框。

3)在“项目类型”树形列表中选择Visual C#Windows选项后,在“模板”列表中选择“控制台应用程序”选项。

4)在“名称”文本框中输入项目的名称,此处为“Convert2”。

5)单击“确定”按钮,创建项目。

6Visual Studio 2005已经默认添加了几个文件,并自动打开其中的一个文件Pro-

gram.cs。修改该文件中的Main方法内容如下:

static void Main(string[] args)

{

    //声明两个double类型的变量pir,分别表示圆周率和半径

    double pi = 3.1415926;

    double r = 2;

 

    //计算圆的面积

    double area = 2 * pi * r * r;

 

    //输出圆的面积

    Console.WriteLine("{0}", area);

 

    //转换double类型的面积area为整型的面积area1,并输出

    int area1 = (int)area;

    Console.WriteLine("{0}", area1);

}

3.运行结果

Ctrl+F5组合键运行程序,运行结果如图2-7所示。

2-7  运行结果

4.代码分析

代码中计算了一个半径为2的圆面积,其中圆周率定义为3.141 592 6,求得其面积为25.132 740 8。当将该值转换为整型数值时,C#将其小数部分完全舍弃,得到的整数部分存储到整型变量area1中。

将上述实例中显式转换部分替换为如下代码:

//转换double类型的面积area为整型的面积area1,并输出

int area1 = area;

Console.WriteLine("{0}", area1);

当运行程序时Visual Studio 2005将给出错误提示,如图2-8所示。

2-8  错误提示

由此可见,Visual Studio 2005提示无法将double类型直接转换为int类型,必须使用显式转换。

C#中还有一种常用的将数值转换为字符串类型的方法,非常方便,即使用ToString方法。下面通过实例说明ToString方法的用法。

1.目的说明

创建一个Windows控制台应用程序,演示C#ToString方法转换的效果

2.实现步骤

1)启动Visual Studio 2005

2)选择“文件”→“新建”→“项目”命令,打开“新建项目”对话框。

3)在“项目类型”树形列表中选择Visual C#Windows选项后,在“模板”列表中选择“控制台应用程序”选项。

4)在“名称”文本框中输入项目的名称,此处为“Convert3”。

5)单击“确定”按钮,创建项目。

6Visual Studio 2005已经默认添加了几个文件,并自动打开其中的一个文件Pro-

gram.cs。修改该文件中的Main方法内容如下:

static void Main(string[] args)

{

    //声明两个double类型的变量pir,分别表示圆周率和半径

    double pi = 3.1415926;

    double r = 2;

 

    //计算圆的面积

    double area = 2 * pi * r * r;

    string areastring = area.ToString();

 

    //输出圆的面积

    Console.WriteLine(areastring);

 

    //输出areastring的类型

    Console.WriteLine(areastring.GetType());

 

    //转换double类型的面积area为整型的面积area1,并输出

    int area1 = (int)area;

    string area1string = area1.ToString();

    Console.WriteLine("{0}", area1string);

 

    //输出area1string的类型

    Console.WriteLine(area1string.GetType());

}

3.运行结果

Ctrl+F5组合键运行程序,运行结果如图2-9所示。

2-9  运行结果

4.代码分析

虽然代码最后的输出结果是两个数字,但其类型已经是字符串,这一点可以从控制台输出的System.String加以证明。

代码中的GetType方法用于获取当前变量的类型。在本实例中由于areastringarea1string是字符串类型,所以控制台中输出了System.String,表示这是一个字符串。

C#中还存在一个通用的转换类Convert,可以用于处理类型之间的转换。Convert支持多种类型之间的转换,其支持的转换类型如表2-4所示。

2-4  Convert转换类型列表

   

ToBase64CharArray

8位无符号整数数组的子集转换为用Base 64数字编码的Unicode字符数组的等价子集

ToBase64String

8位无符号整数数组的值转换为它的等效String表示形式(使用Base64数字编码)

ToBoolean

将指定的值转换为等效的布尔值

ToByte

将指定的值转换为8位无符号整数

ToChar

将指定的值转换为Unicode字符

ToDateTime

将指定的值转换为DateTime

ToDecimal

将指定值转换为Decimal数字

ToDouble

将指定的值转换为双精度浮点数字

ToInt16

将指定的值转换为16位有符号整数

ToInt32

将指定的值转换为32位有符号整数

ToInt64

将指定的值转换为64位有符号整数

ToSByte

将指定的值转换为8位有符号整数

ToSingle

将指定的值转换为单精度浮点数字

ToString

将指定值转换为其等效的String表示形式

ToUInt16

将指定的值转换为16位无符号整数

ToUInt32

将指定的值转换为32位无符号整数

ToUInt64

将指定的值转换为64位无符号整数

下面通过一个实例介绍Convert类的使用方法。

1.目的说明

创建一个Windows控制台应用程序,演示C#Convert转换的效果

2.实现步骤

1)启动Visual Studio 2005

2)选择“文件”→“新建”→“项目”命令,打开“新建项目”对话框。

3)在“项目类型”树形列表中选择Visual C#Windows选项后,在“模板”列表中选择“控制台应用程序”选项。

4)在“名称”文本框中输入项目的名称,此处为“Convert4”。

5)单击“确定”按钮,创建项目。

6Visual Studio 2005已经默认添加了几个文件,并自动打开其中的一个文件Pro-

gram.cs。修改该文件中的Main方法内容如下:

static void Main(string[] args)

{

    //声明两个double类型的变量pir,分别表示圆周率和半径

    double pi = 3.1415926;

    double r = 2;

 

    //计算圆的面积

    double area = 2 * pi * r * r;

    string areastring = Convert.ToString(area);

 

    //输出圆的面积

    Console.WriteLine(areastring);

 

    //输出areastring的类型

    Console.WriteLine(areastring.GetType());

 

    //转换double类型的面积area为整型的面积area1,并输出

    int area1 = Convert.ToInt32(area);

    string area1string = Convert.ToString(area1);

    Console.WriteLine("{0}", area1string);

 

    //输出area1string的类型

    Console.WriteLine(area1string.GetType());

}

3.运行结果

Ctrl+F5组合键运行程序,运行结果如图2-10所示。

2-10  运行结果

4.代码分析

代码中进行的所有转换都通过Convert中的方法进行,如ToInt32方法和ToString方法。从表2-4中可以看到,Convert中支持很多的类型转换。读者可以熟悉一下,以便在需要的时候加以使用。

2.2.4  声明和使用常量

常量即不变的量,代码中实际的数字都是常量,如3.141 592 6。在前文的代码中可以完全不使用变量pi而直接使用常量3.141 592 6,则计算圆面积的代码可以用如下的代码段代替:

//声明两个double类型的变量pir,分别表示圆周率和半径

double r = 2;

 

//计算圆的面积

double area = 2 * 3.1415926 * r * r;

 

//输出圆的面积

Console.WriteLine("{0}", area);

从这段代码中似乎看不到使用常量的优点。使用常量主要有两个目的:首先是为了保证代码的可读性,如使用pi表示圆周率比数字更为清晰易懂;其次使用常量可以避免值的改变。若直接使用数值维护一个高精度的圆周率数值,在输入时很容易产生错误,而使用变量存储pi则有可能使其值发生改变,如不小心被赋值为其他的数值。

声明常量的方法非常简单,以pi的声明为例,如下的代码声明了一个常量pi

//声明一个常量pi表示圆周率

const double pi = 3.1415926;

在以后的代码中即可使用常量pi表示圆周率,而且可以保证其值的不可更改特性。下面的实例演示了常量的使用方法。

1.目的说明

创建一个Windows控制台应用程序,演示C#中常量的使用方法

2.实现步骤

1)启动Visual Studio 2005

2)选择“文件”→“新建”→“项目”命令,打开“新建项目”对话框。

3)在“项目类型”树形列表中选择Visual C#Windows选项后,在“模板”列表中选择“控制台应用程序”选项。

4)在“名称”文本框中输入项目的名称,此处为“Convert5”。

5)单击“确定”按钮,创建项目。

6Visual Studio 2005已经默认添加了几个文件,并自动打开其中的一个文件Program.cs。修改该文件中的Main方法内容如下:

static void Main(string[] args)

{

    //声明一个double类型的常量pi和一个变量r,分别表示圆周率和半径

    const double pi = 3.1415926;

    double r = 4;

 

    //计算圆的面积

    double area = 2 * pi * r * r;

 

    //输出圆的面积

    Console.WriteLine("{0}", area);

 

    //转换double类型的面积area为整型的面积area1,并输出

    int area1 = (int)area;

    Console.WriteLine("{0}", area1);

}

3.运行结果

Ctrl+F5组合键运行程序,运行结果如图2-11所示。

2-11  运行结果

4.代码分析

代码中定义的常量pi是不允许改变的,当对pi进行赋值操作时,将会产生错误。在代码中加入如下语句:

pi = 3.14;

运行时将会出现如图2-12所示的错误提示。