使用变量、操作符、表达式

开发工具与关键技术:C#和Visual Studio
作者:朱海丁
撰写时间:2021年05月18日

1、 语句(statement)是能执行一个操作的命令。我们组合使用各种语句来创建方法。第3章将进一步介绍方法。目前,请暂时将方法(method)视为一个具名的语句序列。第1章介绍过的Main就是方法的一个例子。C#语句遵循一个良好定义的规则集。这些规则对语句的格式和构成进行了描述,我们将这些规则统称为语法(syntax);对应地,规定一个语句应该做什么的规范统称为语义(semantic)。

2、 C#是一种‚自由格式‛(free format)的语言;这意味着所有空白(如空格字符或者换行符)仅充当分隔符而已,除此之外毫无意义。

3、 重要提示 C# 是一种对大小写敏感的语言,例如,footballTeam和FootballTeam是两个不同的标识符。

4、 C#语言保留了77个标识符供自己使用,程序员不可出于自己的目的而重用这些标识符。这些标识符称为关键字(keyword),每个关键字都有特定的含义。

5、 命名变量

为避免混淆,应该为变量采用一个命名规范。下面给出了一些常规建议。

l 名称不要以下划线开头。

l 不要创建仅仅大小写有别的标识符。例如,不要在创建了一个名为myVariable的变量之后又创建一个名为MyVariable的变量,并同时使用这两个变量,它们很容易混淆。

注意使用仅大小写有别的标识符,在使用其他语言开发的应用程序中,就不好重用类,因为那些语言可能是不区分大小写的,如Visual Basic。

l 名称以小写字母开头

l 在包含多个单词的标识符中,从第二个单词开始,每个单词都采取首字母大写的形式(这称为camelCase记号法)。

l 不要使用匈牙利记号法(Hungarian notation)。阅读本书的Microsoft Visual C++开发人员或许会熟悉这种记号法。但是,假如不知道匈牙利记号法是什么,也不必深究。

6、 注意 Microsoft Visual Basic程序员请注意,C#不允许隐式声明。所有变量在使用前都必须显式地声明。

7、 C#不允许使用未赋值的变量。变量必须先赋值再使用,否则程序可能无法编译。这就是所谓的明确赋值规则(Definite Assignment Rule)。例如,以下语句将产生一个编译时错误,因为age尚未赋值:

int age;

Console.WriteLine(age); // 编译时错误

8、.NET Framework 的每个数据类型都有 ToString 方法,用于将对象转换成字符串形式。

9、+操作符可用于连接字符串值

10、在 C#中,带小数点的文字常量数字肯定是 double 值,而不是 float 值,目的是保留尽可能高的精度。

11、C#还支持你或许不太熟悉的一个算术操作符,即取模(余数)操作符。它用百分号(%)表示。 x % y 结果就是用 x 除以 y 所得的余数。例如,9 % 2 结果是 1,因为 9 除以 2,结果是 4 余 1。

注意 如果熟悉 C 和 C++, 就知道不能在这两种语言中对 float 和 double 类型的值使用取模操作符。但C#允许这样做。取模操作符适用于所有数值类型,而且结果不一定为整数。

例如,表达式 7.0 % 2.4 结果是 2.2。

12、数值类型和无穷大

C#语言中的数字,还有另外两个特性是你必须了解的。例如,任何数除以 0 所得的结果是无穷大,不在 int,long 和 decimal 类型的范围内。所以,计算 5 / 0 之类的表达式会出错。但是,double 和 float 类型实际上有一个可以表示无穷大的特殊值,因此表达式 5.0 / 0.0 的值是 Infinity(无穷大)。这个规则的唯一例外是表达式 0.0 / 0.0 的值。通常,如果 0 除以任何数,结果都为 0,但如果用任何数除以 0,结果就为无穷大。表达式 0.0 / 0.0 会陷入一种自相矛盾的境地:值既为 0,又无穷大。针对这种情况,C#语言提供了另一个值 NaN,即“not a number”。所以,如果计算表达式 0.0 /0.0,则结果为 NaN。 NaN 和 Infinity 可在表达式中使用。计算 10 + NaN,结果为 NaN。计算 10 + Infinity,结果为 Infinity。规则的唯一例外是Infinity * 0,其结果为 0。而NaN * 0 的结果仍为 NaN。

6、记住文本框的 Text 属性包含字符串,所以必须先将字符串转换为整数,然后才能赋给 int 变量。int 数据类型提供了int.Parse 方法来执行这个转换

7、在现实生活中,54 / 13 的结果应该是4.153846…(如此重复)。但这不是现实生活;这是C#!正如前面解释的,在 C#中整数除以整数结果也是整数。

13、新手 C#程序员易犯的错误是试图将赋值操作符的这种用法与变量声明一起使用,
比如我也会偶尔出错

例如:int myInt, myInt2, myInt3 = 10;

上述 C#代码在语法上没有错误(能通过编译),但它做的事情可能跟你想象的不同。它实际是声明变量 myInt,myInt2 和 myInt3,并将 myInt3 初始化为 10。然而,不会初始化 myInt或者 myInt2。如果尝试在以下表达式中使用 myInt 或者 myInt2:

myInt3 = myInt / myInt2;

编译器会报告以下错误:

使用了未赋值的局部变量 “myInt”

使用了未赋值的局部变量 “myInt2”

14、count++返回递增发生前的count 值,++count 返回递增发生后的 count 值。

其实很好记,只需看表达式各个元素(操作符和操作数)的顺序即可。在表达式 x++中,变量

x 首先出现,所以先返回它现在的值,然后再递增;在表达式++x 中,++操作符首先出现,

所以先对 x 进行递增,再将新值作为表达式的值返回

15、为此,只需用 var 关键字代替类型名称,
两个变量 myVariable 和 myOtherVariable 称为隐式类型变量。var 关键字告诉编译器根据用于初始化变量的表达式推断变量类型。在本例中,myVariable 是 int 类型,而 myOtherVariable是 string 类型。必须注意,var 只是在声明变量时提供一些方便。但变量一经声明,就只能将编译器推断的那种类型的值赋给它。例如,不能再将 float, double, string 值赋给 myVariable。还要注意,只有提供表达式来初始化变量,才能使用关键字 var。以下声明非法,会导致编译错误:

var yetAnotherVariable; // 错误 - 编译器不能推断类型
————————————————

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值