第一范文网 - 专业文章范例文档资料分享平台

C#学习之路(2)

来源:用户分享 时间:2019-04-30 本文由凌紫泪 分享 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

。当使用==时,一个NaN值永远不会

等于另一个值,即使是另一个NaN值,所以如果要测试一个值是否为NaN,必须使用float.IsNaN或者double.IsNaN函数。当使用Object.Equals函数时,也可以判断两个NaN值是否相等,如object.Equals (0.0/0.0, double.NaN) // true。

33.float类型适用于科学计算,而decimal类型适用于金融计算或者表示那些人为的值,下面是double类型与decimal类型的区别:

34.由于float和double类型的数值在内部是以2为基表示的,所以许多以10为基的小数部分字面值无法被精确的表示,如

,这就是为什么float和double类型不

适用于金融计算的原因。相比之下,由于decimal类型的数值是以10为基表示的,所以这种情况不会出现。

35.C#的bool类型是一个可以被指定为true或者false的逻辑值。尽管一个bool类型仅需要1位的存储空间,但是运行时将使用1个字节的存储空间,因为这是运行时和处理器可以有效工作的最小单位。所以为了避免空间上的浪费,C#提供了一个BitArray类,该类位于System.Collections命名空间下,旨在只使用1位存储空间表示每个bool类型的值。

36.对于引用类型,是否相等,默认情况下是取决于所引用的对象是否相同,而不是对象内部的实际数据。因此,一个对象的两个拥有相同数据的实例被认为是不相等的,除非该对象所属的类型重载了==运算符以达到使他们相等的效果。

37.相等和比较运算符,==, !=, <, >, <=, >=,可以用于所有的数值类型,但是用于实数时需要谨慎小心(参见34)。这些运算符也可以用于enum(枚举)类型成员,比较的是他们代表的整型数值。

38.&&和||运算符用于测试条件与和条件或,他们是短路运算符,也就是说,当前一个表达式不满足时,后续表达式将不再计算,如if ( a && b ),如果表达式a为假,那么表达式b将不会计算,这是十分有用的,例如:if (sb != null && sb.Length > 0),可以避免抛出NullReferenceException异常。&和|运算符也可用于测试条件与和条件或,但是他们不是短路运算符,所以,一般很少

用于条件测试。还有一个三目运算符,形式如q ? a : b,当q为真时,a将被计算,否则b将被计算。

39.C#的char类型代表一个Unicode字符,占用2个字节。一个char的字面表示在一个单引号中,如char c = 'A';转义字符用来表示那些不能显示的字符,一个转义字符是一个反斜杠紧跟一个字符,具有特定的含义,转义字符表如下:

。\%u(或\\x)转义字符允许你通过使

用4位16进制来指定任意的Unicode字符,如char newLine = '\ ';

40.当一个数值类型可以容纳一个unsigned short类型的值时,从char到该数值类型就可以隐式转换。否则的话,就需要显示转换。

41.string类型表示一个不可变的Unicode字符序列。一个string的字面表示在一个双引号中,如string s = \尽管string是引用类型,而不是值类型,但是它的==运算符却遵循值类型的比较语义,如string a = \b = \(a == b); // True。转义字符同样也可以用在string类型中,如string a = \还提供逐字字符串字面值,以@开头并且不再解析转义字符,如string b = @\和上面的字符串a是等价的。

42.+运算符用于连接两个字符串,如string a = \+ \可能某个操作数不是string类型,那么该操作数类型的ToString函数将被调用,如string a = \+ 5;等价于string a = \+ 5.ToString();因为string类型是不可变的,所以多次的使用+运算符构建一个新的string是十分低效的。取而代之的,可以使用System.Text.StringBuilder类型,这代表了一个可变的字符串,以及拥有可以高效的添加,删除,插入,替换子串的方法。

43.string类型不支持<和>运算符来进行比较操作,必须使用string类型的CompareTo函数。 44.字符串的索引返回特定位置上的字符,如Console.Write (\ // r。

45.切记:string类型代表的字符串是不可变的,所有操作字符串的函数将返回一个新的字符串,原来的字符串不会被改变。

46.一个数组(Array)代表一个特定类型的固定数量的元素。一旦数组被创建,它的长度就不能被改变了。数组元素总是被存储在连续的内存块中,以供高效的存取。一个数组以元素类型紧跟方括号来表示,如char[] vowels = new char[5]; 方括号也用于数组索引,存取一个特定位置的元素,如vowels[0] = 'a'; 在运行时所有的数组索引都会进行范围检测,如果使用了一个无效的索引,那么将抛出一个IndexOutOfRangeException异常。

47.数组的初始化表达式可以方便的同时声明和赋值一个数组,如char[] vowels = new char[] {'a','e','i','o','u'}; 或者更简单的方式char[] vowels = {'a','e','i','o','u'}; 可以使用for循环来遍历一个数组中的所有元素,同时,由于数组总是实现了IEnumerable,所以也能够使用foreach来枚举数组成员:

1 char[] vowels = {'a','e','i','o','u'}; 2

3 for (int i = 0; i < vowels.Length; i++) 4 {

5 Console.Write (vowels[i]); 6 } 7

8 foreach (char c in vowels) 9 {

10 Console.Write (c); 11 }

48.创建一个数组总是会使用默认值来预初始化每个元素,一个类型的默认值就是在内存中每一位都是0,对于值类型来说,就是0,对于引用类型来说,就是null。无论元素类型是什么,数组自身总是引用类型的。

49.多维数组有两种形式:矩形数组(Rectangular arrays)和不规则数组(Jagged arrays)。矩形数组声明时使用逗号来分割每一维,如int[,] matrix = new int [3, 3]; 一个矩形数组可以像下面这样初始化:

1 int[,] matrix = new int[,]2 3 {

4 {0,1,2}, 5 {3,4,5}, 6 {6,7,8} 7 }; 8

9 // 更简洁的方式

10 int[,] matrix = 11 {

12 {0,1,2}, 13 {3,4,5}, 14 {6,7,8} };

不规则数组使用连续的方括号来代表每一维,如声明一个2维数组,最外维的大小为3:int[][] matrix = new int[3][]; 可以发现,声明时并没有指定内维的大小,与矩形数组不同的是,每个内维数组可以使任意大小的。因为内维数组被隐式初始化为null而不是一个空数组,所以内维数组必须手动创建:

1 int[][] matrix = new int[3][];

2 for (int i = 0; i < matrix.Length; i++) 3 {

4 matrix[i] = new int [3]; // 创建内维数组 5 for (int j = 0; j < matrix[i].Length; j++) 6 matrix[i][j] = i * 3 + j; 7 }

不规则数组可以像下面这样初始化:

1 int[][] matrix = new int[][]2 3 {

4 new int[] {0,1,2}, 5 new int[] {3,4,5}, 6 new int[] {6,7,8} 7 }; 8

9 // 更简洁的方式 10 int[][] matrix = 11 {

12 new int[] {0,1,2}, 13 new int[] {3,4,5}, 14 new int[] {6,7,8} };

50.还有另一个简洁的数组初始化表达式,它省略了new关键字之后的类型名,让编译器去推断数组类型。当传递数组类型的参数时,这是一个十分有用的缩写:

void Foo (char[] data) { ... }1 2

Foo ( new[]{'a','e','i','o','u'} );

搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新综合文库C#学习之路(2)全文阅读和word下载服务。

C#学习之路(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/wenku/166338.html(转载请注明文章来源)
热门推荐
Copyright © 2018-2022 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top