您的位置:首页 > 编程语言 > C#

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换行
\0Null\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#