文档章节

C#学习笔记(一)

墨斗
 墨斗
发布于 2017/02/27 23:45
字数 2043
阅读 55
收藏 2
C#

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才能用在数组中。

 

 

© 著作权归作者所有

共有 人打赏支持
墨斗
粉丝 1
博文 16
码字总数 4066
作品 0
杭州
程序员
私信 提问
C#可扩展编程之MEF学习笔记(一):MEF简介及简单的Demo

  在文章开始之前,首先简单介绍一下什么是MEF,MEF,全称Managed Extensibility Framework(托管可扩展框架)。单从名字我们不难发现:MEF是专门致力于解决扩展性问题的框架,MSDN中对MEF...

雲霏霏
2014/08/19
0
0
C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻

  前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻。如果没有看过前面的文章,请到我的博客首页查看。   前面我们都是在一个项目中写了一个类来测试的,...

雲霏霏
2014/08/28
0
0
C#可扩展编程之MEF学习笔记(二):MEF的导出(Export)和导入(Import)

  上一篇学习完了MEF的基础知识,编写了一个简单的DEMO,接下来接着上篇的内容继续学习,如果没有看过上一篇的内容, 请阅读:http://www.cnblogs.com/yunfeifei/p/3922668.html。   下面...

雲霏霏
2014/08/19
0
0
C#可扩展编程之MEF学习笔记(五):MEF高级进阶

好久没有写博客了,今天抽空继续写MEF系列的文章。有园友提出这种系列的文章要做个目录,看起来方便,所以就抽空做了一个,放到每篇文章的最后。 前面四篇讲了MEF的基础知识,学完了前四篇,...

雲霏霏
2014/09/24
0
0
语言学习读书笔记PHP和asp.net编程语言哪个更有前途?

编程语言一直是学习计算机编程门专业的热门讨论话题,而我也选择了这个专业,入学一年了,马上面临着语言的选择问题,业余我需要选择一门编程语言作为重点研究对象,那么问题来了:到底是选择...

原创小博客
05/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

可自定义扩展底部列表对话框ListBottomSheetDialogFragment

因为需要,为了方便,构建了一个可以自定义扩展的底部列表对话框,可以应付大部分场景。 效果图如下: 1.默认实现: 2.自定义列表实现 3.自定义头部和列表实现 一.可实现功能 1.默认可实现通...

明月春秋
29分钟前
1
0
数据库---增删改查

增:insert into 表名(列名1,列名2) values(‘列值1’,‘列值2’) 多行数据处理:insert into 表名(列名1,列名2) select ‘列值1’,‘列值2’ union select ‘列值1.1’,‘列值2.2...

森林之下
30分钟前
2
0
分布式/集群下session共享方案汇总

除去那些对容器依赖特别高的方案(如: 基于Tomcat的memcached-session-manager / tomcat-redis-session-manager,基于Jetty的jetty-nosql-memcache / jetty-session-redis ),自己整理了下...

哥本哈根的小哥
56分钟前
2
0
Vue中的缩写:v-bind、v-on

v-bind 缩写:: 预期:any (with argument) | Object (without argument) 参数:attrOrProp (optional) 修饰符: .prop - 被用于绑定 DOM 属性。 .camel - (2.1.0+) 将 kebab-case 特性名转换......

文文1
今天
2
0
epoll中使用

1、一个线程epoll_wait时,另一个线程调用epoll_ctl是安全的。 2、使用edge触发,在socket有数据到来后,不收取数据,再次调用epoll_ctl将socket加入,仍会触发下一次动作。 asio用该方法来发...

gelare
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部