C#学习笔记(一)
2017-02-27 00:00
183 查看
1.标识符
C#的字符集遵循Unicode3.0,Technical Report 15, Annex 7等标准。Unicode是16位字符格式。任何的Unicode的字符都可以用Unicode的转义序列\u或\U,紧跟着四个十六进制数来指定。例如,Unicode的转义序列\u0043\u0023代表了字符C#。标识符标识符几乎可以使用任何名称,但是有几条限制。下面是创建标识符时的一些规则:
在标识符的任何部分使用非格式化的Unicode字符。
标识符可以用允许的Unicode字符或下划线开始。
标识符以@符号开始时,允许使用关键字来作为标识符。
除非以@符号作为前缀,否则,不能以关键字来作为标识符。下面是一些合法的C#标识符的例子:
currentBid @override \u0043sharp
下面是些无效的标识符的例子:
2six // error - 第一个字符是数字 params // error - 标识符是关键字 \u0027format // error - Unicode格式化字符
标识符不允许以数字开始,标识符的第一个字符必须是字母或下划线。C#的关键字是保留的,不能用来作为标识符;在关键字前加'@'符号后可以作为标识符。不允许把Unicode的格式化字符用于标识符的任何部分。
2.关键字
关键字是系统保留的,并且在编写C#程序时有特殊的预定义的含义。3.基本的C#类型
变量声明变量(variable)是程序执行时能够修改的元素。它们作为存储器来保存任何计算阶段的信息。每个变量都有一个类型(type),
Type Identifier [Initializer];
简单类型
简单类型由布尔(Boolean)类型和数值(Numeric)类型组成。数值类型又进一步细分为整值(Integral)和浮点(Floating Point)类型。
3.1布尔类型
只有一种布尔类型,叫做bool(布尔)。bool值可为真(true)也可为假(false)。true或false也是用于bool的惟一文字值。3.2整值类型
整值又进一步细分为八个类型,外加字符(character)类型。它们是短字节型(sbyte)、字节型(byte)、短整型(short)、无符号短整型(ushort)、整型(int)、无符号整型(uint)、长整型(long)、无符号长整型(ulong)、字符型(char)。除了char之外所有整值变量都有正负之分。char包含有单个的Unicode字符。声明如下:
char yes = 'Y'; char charA = '\u0041'; // Unicode 'A' char charA = '\u005A'; // Unicode 'Z'
Unicode的转义符表示法(escape character notation)需要以\u或\U为前缀的四个十六进制数字。如果只有两位,前面补零使其达到四个字符。
[注意] C#的char的大小(16位)与一般的C++ char(8位)之间的差别。C#的char类似于C++的wchar_t(16位)。
常见的转义序列如下:
转义序列
转义序列 | 说明 | 转义序列 | 说明 |
\' | 单引号 | \b | 退格 |
\" | 双引号 | \f | 换页 |
\\ | 反斜线 | \n | 换行 |
\0 | Null | \r | 回车 |
\t | 水平制表 | \v | 垂直制表 |
\a | 响铃 |
[注意] C++本身没有字节的等价体。但是可以用有符号或无符号字符的typedef产生同样的效果。C++的长整型变量是32位,而C#的长整型变量是64位。
3.3浮点型变量
C#提供了两种浮点型变量--单精度浮点型(float)和双精度浮点型(double)--和叫做十进制(decimal)的新的类型。3.4结构类型
结构(struct)是值类型。到目前为止介绍的类型都属于值类型。值类型是直接容纳数据的变量。它们在堆栈上分配,从而可以高效地存储和检索信息。结构是能够容纳其他项目的集合的容器。它们给程序员提供了创建自定义的值类型的方法。3.5引用类型
在C#中有四种引用类型,即类(class)、接口(interface)、委托(delegate)和数组(array)。引用类型是在堆上分配的库或用户定义的类型。
接口用于显示类的公共属性和行为。
委托提供了一种类型安全的方法来动态地引用类的方法。
数组提供了存储指定类型的多个项的方法。
3.6枚举类型
枚举(enum)类型是常数的列表。每个枚举元素是以字而不是以数字来表示的。这就便于了解所使用的值的含义。下面是一个例子。enum Months {Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec };
[注意] Java没有枚举类型
按默认设置,除非特别指定,否则枚举的第一个元素是从0开始。
枚举类型可以是byte、short、int或long。在枚举类型名称后面用冒号和类型特性来指定元素的类型。例子如下:
enum Month: byte { January, February, March, Aprch, May, June, July, August, September, October, November, December };
[注意] C#的枚举类型可以指定为byte、short、int或long,但是在C++中它们只能是int。
3.7字符串类型
字符串(string)类型是C#的一个基本类型。它的值用Unicode字符的字符串表示。有两种类型的字符串文字。第一种类型是两个双引号之间的有效字符集合,包括字符的转义序列。 string uThinker = "Uthinker! \a" // Uthinker! <ding> string hello = "Hello\aWorld!" // Hello<tab>World! string well = "Do you\nlike\nwhere!"// Do you // like // where!
第二种类型是逐字字符串文字(verbatim string literal)。它由带前缀@的字符串构成。逐字字符串与普通字符串的差别是前者不处理字符的转义序列,而是按原义翻译。因为双引号中的字符的转义序列不起作用,所以可以并排使用两个引号以便在字符串中包括单引号。需要时,逐字字符串可以跨过多行。
[注意] C#包括叫做逐字字符串的特定类型字符串。在文件路径中避免转义序列,以及修饰降低了字符串的可读性的情况下,它是有用的。
3.8数组
数组是内置在C#的集合类。数组不仅有数据存储功能,而且提供数据的基本恢复和管理功能。[注意] C++数组是指向连续的存储器块的指针。该存储器块用指针或索引来存储和检索数据。C#数组是具有排序或决定长度等操作的内置功能的对象。C#的数组的声明放置在类型后面的方括号中,而不是放在标识符后。
3.8.1.一维数组
一维数组(single-dimension array)提供了存储和操作项目列表的能力。每个元素都属于同一类型。下面是声明这种数组的语法:
Type[] Array-Identifier [initializer];
数组标识符(array-identifier)可以是任何有效的标识符。它应该是对数组有意义的。可选择的初始化符给数组分配存储器。
3.8.2.N维数组
对于包括的每一个新维,要添加一个逗号到数组声明的方括号内。在初始化期间,添加一个整数值到声明中指定的每个维。例子如下 :
long [ , ] determinant = new long[4, 4]; int [ , , ] stateSpace = new int[2, 6, 2]; bool [ , ] exclusiveOr = new bool[2, 2] { {false, true}, {true, false} };
请记住,在包括初始化符列表时,初始化符的方括号中的整数值是可选的。
3.8.3.不规则数组
不规则数组允许创建每个维的每个元素大小不同的多维数组。如果应用程序的数据无法覆盖整个可能值的范围,就可以考虑使用这种数组。它也节省了存储空间。
decimal[][] monthlyVariations = new decimal [12][]; monthlyVariations[(int)Months.Jan] = new decimal[31]; monthlyVariations[(int)Months.Feb] = new decimal[28]; . . . monthlyVariations[(int)Months.Dec] = new decimal[31];
[注意] enum类型不能隐式转换为整型。它必须转换成int才能用在数组中。
相关文章推荐
- C#学习笔记(一)
- C#学习笔记(五):类成员的定义
- C#学习笔记(六):类成员的其他议题
- c#学习笔记(数据库连接以及SqlDataReader、SqlCommand的使用)
- c#学习笔记(一)拆箱 装箱
- C#学习笔记(十六):使用打开保存文件对话框
- C#学习笔记(四)
- C#学习笔记(九):c#运算符重载.[简单理解]
- C#学习笔记二函数、函数重载
- C#学习笔记(五)中级 方法的重载,参数,继承和多态,异常处理,命名空间,接口,泛型
- C#学习笔记(1)----用EditPlus编译运行C#程序
- C#学习笔记(五)-ADO.NET访问数据库
- c#学习笔记(1)GridView问题
- C#学习笔记(二) 标准Dispose模式的实现
- C#学习笔记(六)——面向对象编程简介
- C#学习笔记1:C#数据类型以及变量何时申请内存
- C#学习笔记(一)
- C#学习笔记——MDI窗体(多文档界面)
- C#学习笔记(二)
- C#学习笔记(三)—–C#高级特性中的委托与事件(上)