09
10月
2020

《轻松上手C#编程》第二章存储数值

2存储数值

本章演示如何在C#程序中存储各种类型的数据。

2.1 创建变量

2.2 读取输入

2.3 使用数组

2.4 转换数据类型

2.5 固定常数

2.6 小结

2.1 创建变量

“变量”就像C#程序中的容器,其中数据值可以存储在计算机内存中。可以使用变量名称来引用存储的值。

 

 

 

 

程序员可以为变量选择任何名称,只要它遵循C#命名约定–所选名称只能包含字母,数字和下划线字符,但必须以字母,下划线或@字符开头。 另外,必须避免使用C#关键字。选择有意义的名称以使代码更易理解是一种很好的做法。

要在程序中创建新变量,必须对其进行“声明”,并指定数据类型和选择的名称。变量声明具有以下语法:

数据类型 变量名 ;

可以使用以下语法在一个声明中创建具有相同数据类型的多个变量:

数据类型 变量名1,变量名2,变量名3;

下表列出了最常见的C#数据类型以及简要说明和示例内容。

数据类型 说明
int 整数,例如:100
char 单个字符,例如:’A’
float 7位精度的浮点数
double 15位精度的浮点数
decimal 28位精度的浮点数
bool 布尔值true或false
string 一串字符,例如 :“easycsharp”

变量声明必须出现在可执行语句之前–因此它们可在语句中引用。

beware

 

 

 

 

在C#中名称区分大小写–因此,名称为num,Num和NUM的变量被视为三个单独的变量。传统上,C#变量名以所有小写字符创建。

beware

 

 

 

 

char数据类型的字符值必须用单引号引起来,但是string类型的字符串必须用双引号引起来。

tips

 

 

 

 

首选decimal数据类型用于存储货币值。

当将值分配给变量时,可以说它已被“初始化”。可以在其声明时初始化变量。 可以使用WriteLine()方法显示存储在任何初始化变量中的值,该方法在此处用于显示“ Hello World!”问候:

code

 

 

 

 

Variables

1.打开Visual Studio 2019,然后新建一个控制台应用并将其命名为“Variables”

2.将光标放在Main()方法的{}大括号之间,然后键入此代码以命名控制台

Console.Title = “Variables” ;

3.接下来,精确键入这些语句以声明和初始化常见C#数据类型的变量

char letter = ‘A’ ; // Declared then initialized.

int number = 100 ; // Declared then initialized.

float body = 98.6f ; // Declared and initialized.

double pi = 3.14159 ; // Declared and initialized.

decimal sum = 1000.00m ; // Declared and initialized.

bool flag = false ; // Declared and initialized.

string text = “C# Is Fun” ; // Declared and initialized.

4.现在,插入语句以显示每个存储的值

Console.WriteLine( “char letter:\t” + letter ) ;

Console.WriteLine( “int number:\t” + number ) ;

Console.WriteLine( “float body:\t” + body ) ;

Console.WriteLine( “double pi:\t” + pi ) ;

Console.WriteLine( “decimal sum:\t” + sum ) ;

Console.WriteLine( “bool flag:\t” + flag ) ;

Console.WriteLine( “string text:\t” + text ) ;

Console.ReadKey( ) ;

5.点击Start按钮运行应用程序以查看储存值。

result1remember

 

 

 

 

给float增加f后缀,给decimal增加m后缀,以将它们与double值区分开。

tips

 

 

 

 

字符串中包含\ t是一个“转义字符”,在输出中打印一个制表符。+符号是一个“连接”运算符,它将存储的值添加到字符串中以进行输出。

2.2 读取输入

为了与用户进行交互,C#程序通常会要求用户输入一些值。 ReadLine()方法是ReadKey()方法的辅助方法,可用于读取用户输入。 当用户按下Enter键以完成一行时,可以通过ReadLine()方法将控制台中的用户输入分配给字符串变量。

beware

 

 

 

 

重要的是要认识到ReadLine()方法始终将输入读取为字符串值。

请求用户输入时,最好提示用户而不是在请求后添加换行符。 使用Console.Write()方法可以轻松实现:

code

 

 

 

Input

1.打开Visual Studio 2019,然后新建一个控制台应用并将其命名为“Input”

2.将光标放在Main()方法的{}大括号之间,然后键入此代码以命名控制台

Console.Title = “Input” ;

3.接下来,精确键入这些语句以请求用户输入并将其分配给变量

Console.Write( “Please Enter Your Name: “ ) ;
string name = Console.ReadLine( ) ;

4.现在,添加语句以显示包含已存储的用户输入值的消息

Console.WriteLine( “Welcome ” + name + “!” ) ;
Console.ReadKey( ) ;

5.点击Start按钮或按F5运行应用程序可以看到存储在输出中显示的用户输入值result2

用户输入的数字值将作为字符分配给字符串变量-因此无法对其进行算术运算。

tips

 

 

 

 

请注意,此处如何使用两个+串联运算符将输入插入到字符串中。

当您要求用户输入数字值时,有必要将ReadLine()方法读取的string值转换为数字数据类型。 System.Convert类为此提供了许多有用的方法,包括:

方法 返回
Convert.ToInt32( ) 32位整数
Convert.ToDouble( ) 双精度浮点值
Convert.ToDecimal( ) 十进制值

tips

 

 

 

 

还有一个有用的Convert.ToString()方法可将值转换为字符串类型。

仅需在适当方法的括号内指定由ReadLine()方法读取的字符串值:

code

 

 

 

 

Conversion

1.打开Visual Studio 2019,然后新建一个控制台应用并将其命名“Conversion”

2.输入以下语句以请求用户输入以进行转换并分配给两个变量

Console.Write( “Please Enter A Number: “ ) ; *
double num = Convert.ToDouble( Console.ReadLine( ) ) ;
Console.Write( “Now Enter Another Number: “ ) ;
double sum=num + Convert.ToDouble( Console.ReadLine( ) ) ;

3.现在,添加语句以显示一条消息,其中包含用户输入值的总和

4.点击Start按钮或F5运行应用程序,然后输入两个数值可以看到转换后的输入值已添加到输出中

remember

 

 

 

 

在这里,第二个输入的数字在添加第一个输入的数字之前被转换为数值。

2.3 使用数组

数组是可以存储多个数据的变量–与常规变量不同,常规变量只能存储一个数据。数据按顺序存储在从零开始编号的数组“元素”中。因此,第一个值存储在元素0中,第二个值存储在元素1中,依此类推。

 

 

 

 

通过声明数据类型来声明一个数组,后缀以[]方括号表示一个数组。

在使用new关键字指定元素大小来创建数组“实例”之前,并不会初始化内存中的数组变量,如下所示:

数据类型[ ] 数组名=new 数据类型[大小]

然后可以将值分别分配给每个可用元素:

数组名[下标]=数值;

remember

 

 

 

 

数组编号从零开始-因此,六个元素的数组中的最后一个元素是5,而不是6。 该编号称为“从零开始的索引”。

数组名[0]

数组的元素统称为“索引”。数组可以有多个索引–表示多个维度,而不是常规数组的单个维度。具有三个索引或更多索引的多维数组并不常见,但是二维数组可用于存储基于网格的信息(例如坐标)。

beware

 

 

 

 

您只能将数据存储在数组声明中指定的数据类型的数组元素内。

要创建多维数组,声明中数据类型后面的[]方括号必须为每个其他索引包含一个逗号。 同样,每个索引的大小必须指定为以逗号分隔的列表,如下所示:

数据类型[ , ] 数组名=new 数据类型[大小,大小]

然后可以将值分别分配给每个可用元素:

数组名[下标1,下标2]=数值;

tips

 

 

 

 

特殊的foreach循环构造使您可以轻松地遍历数组的所有元素–有关详细信息,请参见此处。

另外,也可以初始化多维数组,并通过声明逗号分隔列表中每个索引的值来声明每个元素的值,该列表以大括号分组-用大括号括起来的逗号分隔组:

数据类型[ , ] 数组名=new 数据类型[大小]

{{数值1,数值2,数值3},{数值1,数值2,数值3}};

beware

 

 

 

 

指定值的数量必须与指定的数组大小完全匹配,以避免发生错误。

可以使用数组名称引用任何单个元素的值,后跟方括号,其中包含每个索引的元素编号。 例如,要引用第二个索引的第一个元素内的值:

数组名[1,0]

code

 

 

 

Array

1.打开Visual Studio 2019,然后新建一个控制台应用并将其命名“Arrays”

2.接下来,键入此语句以创建一个字符串数组

string [ ] cars = new string[ 3 ] { “BMW”, ”Ford”, ”Opel” } ;

3.现在,输入这段代码创建一个2维数组

int [ , ] coords = new int[ 2, 3 ] { { 1, 2, 3 } , { 4, 5, 6 } } ;

2array

4.添加语句以显示包含存储的数组元素值的输出

Console.WriteLine( “Second Car: ” + cars[ 1 ] ) ;
Console.WriteLine( “X1,Y1: ” + coords[ 0, 0 ] ) ;
Console.WriteLine( “X2,Y3: ” + coords[ 1, 2 ] ) ;
Console.ReadKey( ) ;

5.点击Start按钮或F5运行应用程序可以看到存储在数组中的值

result3

2.4 转换数据类型

通过将变量中存储的值转换为其他类型,可以将其转换(强制)为其他数据类型的变量。 此过程称为“转换”,并且可以是隐式或显式的。

tips

 

 

 

 

转换也称为“类型转换”。

  • 将数字从较小的精度数据类型转换为较大的精度数据类型时,C#以类型安全的方式自动执行隐式转换。 例如,当将int加到double上时。
  • 另一方面,显式强制转换要求在语句中包含强制转换运算符,以指定应将值强制转换为什么样的数据类型。新数据类型必须在包含要转换的数据的变量名称之前的括号中指定,因此其语法如下所示:

变量名=(数据类型)变量名

这是C编程语言中也可以找到的传统转换形式。通常必须进行强制转换以准确存储算术运算的结果以防止数据丢失。一个整数除以另一个整数将始终产生整数结果,该结果可能会被截断。 例如,整数除法7/2会产生3的截断整数结果。

要存储准确的浮点结果,需要将结果转换为合适的数据类型,例如double,如下所示:

double sum = ( double ) 7 / 2 ; // Sum is 3.5

remember

 

 

 

 

一个整数除以另一个整数的结果将被截断,而不是四舍五入-因此9.9的结果将变为9。

应该注意的是,在执行算术运算/ 2的除法之前,运算符优先级将第一个操作数7转换为指定的数据类型,因此有效的声明是:

double sum = ( double ) ( 7 ) / 2 ; // Sum is 3.5

将表达式括起来为(7/2)将首先对整数执行算术运算,因此整数结果在被强制转换为float变量之前将被截断–这不是期望的效果!

double sum = ( double ) ( 7 / 2 ) ; // Sum is 3.0

单个字符值可以有效地显式转换为int数据类型,以显示其ASCII码值。 同样,可以颠倒该过程以显示整数的字符值。

code

 

 

 

Cast

1.打开Visual Studio 2019,然后新建一个控制台应用并将其命名“Cast”

2.输入以下语句以创建和初始化整数变量和双精度浮点变量

double num = 10.5 ;
int integer = 2 ;

3.接下来,添加语句以将整数值隐式转换为双精度值,并显示结果

num = num + integer ;
Console.WriteLine( “Implicit Cast: ” + num ) ;

4.现在,将整数除法的结果显式转换为双精度值,并显示该结果

num = ( double ) 7 / integer ;
Console.WriteLine( “Explicit Cast: ” + num ) ;

5.将整数值转换为char数据类型并显示其ASCII等效字符

char letter = ( char ) 65 ;
Console.WriteLine( “Cast Integer: ” + letter ) ;

6.将字符值转换为int数据类型并显示其ASCII等效代码号

int ascii = ( int ) ‘A’ ;
Console.WriteLine( “Cast Letter: ” + ascii ) ; Console.ReadKey( ) ;

7.点击Start按钮或F5运行应用程序可以看到转换为其它数据类型的值

result4

tips

 

 

 

 

删除步骤4中的(double)强制转换,以查看结果被截断了。、

tips

 

 

 

 

ASCII(发音为“ askee”)是美国信息交换标准代码,它是纯文本的公认标准。 在ASCII中,字符在0-127范围内以数字表示。 大写字母“ A”为65,因此整数值将转换为int变量。

2.5 固定常数

变量声明使用关键字(例如string,int或double)显式指定其允许的数据类型,以确保程序不会意外分配不适当的数据。在肯定不会发生这种情况的地方,可以在声明变量时使用var(变量)关键字,根据其初始值的数据类型隐式指定其数据类型。 在这种情况下,C#编译器将自动确定适当的数据类型。var关键字对于存储标准C#数字,布尔值或字符串数据类型以外的值最有用。使用var关键字进行的所有变量声明都必须分配一个初始值,以立即确定该变量的数据类型。

beware

 

 

 

 

使用var关键字声明变量可以降低程序代码的可读性,因为它不指示数据类型。

可以通过在变量名上加点后缀GetType()方法来显示任何变量的数据类型。 例如,当num变量是双精度数据类型时,调用num.GetType()将返回System.Double结果。

当不打算更改存储值时,可以创建一个“常量”容器来保护它免受更改。它的声明与变量的声明相似,但是以const关键字开头。使用const关键字进行的所有声明都必须分配一个初始值,以立即固定其常量值。

可以使用enum关键字在一个枚举列表中指定标识符名称来定义多个常量值。这将创建一个数据类型,该数据类型由{}括号内的逗号分隔的命名常量列表组成。枚举列表具有一个基础的默认int值,该值从零开始对列表名称进行编号,就像数组中的元素一样。列表中的任何名称都可以通过在列表名称后加点后缀来引用,并通过强制转换显示其基础值。

remember

 

 

 

 

枚举列表不能在任何方法块中声明,因此必须在Main()方法外部声明。

C#枚举类提供了几种使用枚举列表的方法。其中许多方法要求将列表的数据类型作为参数,因此可以通过将列表名称指定为typeof()方法的参数,将其有效地分配给var变量。枚举类的GetName()方法可以在指定的索引位置显示名称,IsDefined()方法可以用于测试列表是否包含指定的名称。枚举列表声明必须直接写在程序名称空间中或类块中。

code

 

 

 

Constant

1.打开Visual Studio 2019,然后新建一个控制台应用并将其命名“Constant”

2.在Main()方法块之前的class块中键入此语句,以创建一个枚举器列表

enum Days { Sat, Sun, Mon, Tue, Wed, Thu, Fri } ;

3.现在,将注意力转移到Main()方法上,然后声明并初始化一个常量和一个变量

const double pi = 3.14159265358979 ;
var daysType = typeof( Days ) ;

4.接下来,添加语句以显示常量的数据类型并将其值用于输出

Console.WriteLine( “Pi Type: ” + pi.GetType( ) ) ;
Console.WriteLine( “Circumference: ” + ( pi * 3 ) ) ;

5.然后,添加语句以显示枚举列表中第一项的名称和索引位置

Console.WriteLine( “\nFirst Name: ” + Days.Sat ) ;
Console.WriteLine( “1st Index: ” + ( int ) Days.Sat ) ;

6.最后,添加语句以在第二个索引位置显示名称并查询枚举数列表

string name = Enum.GetName( daysType , 1 ) ;
Console.WriteLine( “\n2nd Index: ” + name ) ;
bool flag = Enum.IsDefined( daysType , “Mon” ) ;
Console.WriteLine( “Contains Mon?: ” + flag ) ;
Console.ReadKey( ) ;

7.点击Start按钮或F5键运行应用成语可以看到运行中的常数值

result5

remember

 

 

 

 

枚举列表包含名称,而不是字符串,因此它们不必用引号引起来,但是名称必须作为字符串参数提供给IsDefined()方法。

tips

 

 

 

 

您可能需要避免使用var关键字,以确保使用可变数据类型。 例如,使用var id = getID()这行代码; 分配的值(因此是可变数据类型)可以是数字或字符串。

2.6 小结

  • 变量将数据值存储在计算机内存中,并且可以使用该变量的名称来引用该值。
  • 变量声明必须指定其可能包含的数据类型,以及程序员指定的有效名称。
  • 常见的C#数据类型包括int,char,float,double,decimal,bool和string。
  • 必须先声明变量,然后才能引用它们。
  • 给变量赋值时,将对其进行初始化。
  • Console.ReadLine( )方法可用于将用户输入的值分配给变量。
  • Console.WriteLine( )方法在其输出之后添加换行符,但Console.Write( )方法不添加换行符。
  • System.Convert类提供了许多将字符串值转换为数字数据类型的有用方法。
  • 数组变量可以在基于零的索引的顺序元素中存储多个数据项。
  • 数组声明必须指定其可能包含的数据类型,后跟[]和程序员指定的名称。
  • 在使用new关键字指定数据类型和元素大小创建数组实例之前,不会初始化数组。
  • 可以使用数组名称和元素将值分配给单个数组元素索引号。
  • 数组声明可以将其值分配给所有数组元素,以逗号分隔的{}括号内的值列表。
  • 数组可以具有多个索引,以表示多个维,其中每个索引都用逗号分隔。
  • 强制转换是一种数据类型到另一种数据类型的转换。
  • 隐式转换由C#自动执行。
  • 通过在语句中包含强制转换运算符来执行显式强制转换,以指定所需的新数据类型。

大博客-编程实战干货分享

原文链接:https://www.daboke.com/program/easycsharpch2.html

B 站配套视频教程:https://www.bilibili.com/video/BV1s5411j7sZ

教材和源码下载:https://pan.baidu.com/s/1Zmvq3QSU1vkWuTcL-6c5CA  提取码:0dx7

You may also like...

发表评论

电子邮件地址不会被公开。

微信 OR 支付宝 扫描二维码
为本文作者 打个赏
pay_weixin pay_weixin
最喜欢你一言不合就打赏的样子了^_^