C# 从入门到精通 学习笔记1 第2章 使用变量、操作符和表达式

C# 从入门到精通 学习笔记1 第2章 使用变量、操作符和表达式

本章内容

  1. 理解语句、标识符和关键字
  2. 使用变量来存储信息
  3. 使用基本数据类型
  4. 使用+和-及其他算术操作符
  5. 对变量进行递增和递减

2.1 理解语句

        语句(statement)是能执行一个操作的命令。暂时认为方法(method)是一个具名的语句序列。Main()就是一个方法的例子。
        C#语句遵循一个良好定义的规则集。这些规则对语句的格式和构成进行了描述,我们将这些规则统称为语法(syntax);对应地,规定一个语句应该做什么的规范统称为语义(semantic)。例如:必须用分号中止所有语句。
        提示:C#是一种‚自由格式(free format)的语言;这意味着所有空白(如空格字符或者换行符)仅充当分隔符而已,除此之外毫无意义。换言之,可以采用自己喜欢的任意样式安排语句的布局。一个简单的、统一的布局样式会使程序更容易阅读和理解。

2.2 使用标识符

        标识符(identifier)是用来对程序中的各个元素进行标识的名称。这些元素包括命名空间、类、方法和变量等。
        在 C#语言中选择标识符时必须遵循以下语法规则:
1. 只能使用字母(大写和小写)、数字和下划线字符
2. 标识符必须以一个字母或者下划线开头
        重要提示:C#是一种对大小写敏感的语言。

2.2.1 识别关键字

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

        C#还使用一下标识符:

        这些标识符不是 C#保留关键字,可以将这些名称用作自己的方法、变量和类的标识符。但是,尽量不要这样做。

2.3 使用变量

        变量(variable)是容纳了一个值的存储位置。可将变量想象成容纳了临时信息的一个容器。必须为程序中的每个变量分配一个唯一的名称。我们用变量名来引用它所容纳的值。

2.3.1 命名变量

        为避免混淆,应该为变量采用一个命名规范。下面给出了一些常规建议。
1. 名称不要以下划线开头。
2. 不要创建仅仅大小写有别的标识符。例如,不要在创建了一个名为 myVariable 的变量之后又创建一个名为 MyVariable 的变量,并同时使用这两个变量,它们很容易混淆。
        注意:使用仅大小写有别的标识符,在使用其他语言开发的应用程序中,就不好重用类,因为那些语言可能是不区分大小写的,如 Visual Basic。
3. 名称以小写字母开头
4. 在包含多个单词的标识符中,从第二个单词开始,每个单词都采取首字母大写的形式(这称为 camelCase 记号法)。
5. 不要使用匈牙利记号法(Hungarian notation)。
        应该将最开始的两条建议当作自己必须采纳的,因为它们关系到与公共语言规范(Common Language Specification,CLS)的相容性。假如希望自己的程序具有与其他语言(如 Microsoft Visual Basic)的互操作性,就必须采纳这两条建议。

2.3.2 声明变量

        声明一个变量时,必须指定它将容纳的数据的类型。变量的类型和名称是在一个声明语句中声明的。比如:int age;
        注意:Microsoft Visual Basic 程序员请注意,C#不允许隐式声明。所有变量在使用前都必须显式地声明。
        声明好变量之后,可以向它赋一个值。比如:age=42;
        等号(=)是赋值操作符,它的作用是将右侧的值赋给左侧的变量。

2.4 使用基本数据类型

        C#内建了大量基本数据类型(primitive data type)。

2.4.1 未赋值的局部变量

        C#不允许使用未赋值的变量。变量必须先赋值再使用,否则程序可能无法编译。这就是所谓的明确赋值规则(Definite Assignment Rule)。

2.5 使用算术操作符

        C#支持我们在孩提时代就学过的常规算术操作符:加号(+)用于加法,减号(-)用于减法,星号(*)用于乘法,正斜杠(/)则用于除法。这些符号(+,–,*和/)称为操作符(operator),因为它们用于对值进行“操作”以生成新值。
        注意:操作符操作的值称为操作数(operand)。

2.5.1 操作符和数据类型

        并不是所有操作符都适用于所有数据类型。
        提示:.NET Framework 提供了一个名为 Int32.Parse 的方法,在需要对作为字符串存储的值执行算术运算时,可以先用 Int32.Parse 方法将字符串值转换成整数值。
        在 C#中,带小数点的文字常量数字肯定是double 值,而不是 float 值,目的是保留尽可能高的精度。
        整数相除计算时,C#总是对结果值进行向下取整。
        5/0会出错;5.0/0.0的值是无穷大;0.0/0.0为NaN(not a number)。
        C#用%表述取模(余数)操作符,x%y结果是x除以y所得的余数。
        注意:如果熟悉 C 和 C++,肯定知道不能在这两种语言中对 float 和 double 类型的值使用取模操作符。但在 C#中是允许这样做的。取模操作符适用于所有数值类型,而且结果不一定为整数。例如,表达式 7.0 % 2.4 的结果是 2.2。

2.5.3 控制优先级

        优先级(precedence)控制着一个表达式中的各个操作符的求值顺序。可以使用圆括号来覆盖优先级规则,强制操作数按你希望的任何方式绑定到操作符。
        注意:本书所说的圆括号指的是();大括号或花括号指的是{};方括号指的是[]。

2.5.4 使用结合性对表达式进行求值

        操作符优先级只能解决部分问题。结合性(associativity)是指操作数的求值方向(向左或向右)。

2.5.5 结合性和赋值操作符

        在 C#语言中,等号(=)称为赋值操作符。
        注意:myInt5 = myInt4 = myInt3 = myInt2 = myInt = 10;----所有变量拥有相同的值;但是int myInt, myInt2, myInt3 = 10;声明变量myInt,myInt2和myInt3,并将myInt3初始化为10,不会初始化myInt或myInt2。

2.6 变量的递增和递减

        要使变量 count 递增 1,写count++;如要递减count--。

2.6.1 前缀和后缀

        count++; //后缀递增
        ++count; //前缀递增
        count--; //后缀递减
        --count; //后缀递减
        只需看这种表达式的各个元素(操作符和操作数)出现的顺序即可。在表达式x++中,变量 x 首先出现,所以会先返回它现在的值,然后才会递增;在表达式++x 中,++操作符首先出现,所以先对 x 进行递增,再将新值作为表达式的值来返回。
        如果只是孤立地使用递增和递减操作符,请统一使用后缀形式。

2.7 声明隐式类型的局部变量

        赋给一个变量的值必须具有和变量相同的类型。还可要求 C#编译器根据表达式推断一个变量的类型,并在声明变量时自动使用这个类型。
        var myVariable = 99;
        var myOtherVariable = "Hello";
        这两个变量成为隐式类型(implicitly typed)变量。var 关键字指示编译器根据用于初始化变量的表达式来推断变量的类型。
        var 只是在声明变量的时候能为我们提供一些方便。但是,变量一旦声明,就只能将编译器推断的那种类型的值赋给它。还要认识到的一点是,只有在提供了一个表达式来初始化变量的时候,才能使用关键字 var。
        以下声明是非法的,会导致编译错误:var yetAnotherVariable; // 错误 - 编译器不能推断类型

重要提示:

        如果用 Visual Basic 写过程序,就可能非常熟悉 Variant 类型,该类型可以用来在变量中保存任意类型的值。这里要强调的是,应该忘记当年用 VB 编程时学到的有关 Variant 变量的一切。虽然两个关键字貌似有联系,但 var和 Variant 完全是两码事。在 C#中用 var 关键字声明了一个变量之后,赋给该变量的值的类型就固定下来了,这个类型必须和用于初始化该变量的值的类型相同,不能随便改变!
        应该坚持使用显式指定了类型的变量;除非万不得已,不要使用隐式类型的变量。
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页