文档章节

C#学习笔记(一)

墨斗
 墨斗
发布于 2017/02/27 23:45
字数 2043
阅读 52
收藏 2
点赞 0
评论 0
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
C#中创建和使用动态链接库

动态链接库英文为DLL,是Dynamic Link Library 的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的库,它有助于共享数据和资源。 (一)创建动态链接库 1)新建一个类库 2)编写该...

zting科技
2017/01/05
0
0
Windows8/Silverlight/WPF/WP7/HTML5周学习导读(1月28日-2月3日)

Windows8/Silverlight/WPF/WP7/HTML5周学习导读(1月28日-2月3日) 本周Windows 8开发学习资源更新 本周Silverlight学习资源更新 本周Windows Phone开发学习资源更新 本周WPF学习资源推荐 本周...

冷秋寒
06/29
0
0
Cosmos开篇--C#开源操作系统学习系列一

cosmos简介 cosmos全称C# open source manage operation system,是一个使用C#语言基于.net framwark框架编写的开源操作系统,主页www.gocosmos.org。可从cosmos.codeplex.com获取最新的源代...

李恒哲
2011/02/06
0
4
.Net学习资料

1.博客系列文章 (1)设计模式 吕震宇 设计模式 张逸:晴窗笔记 Design & Pattern 梦幻Dot Net .Net设计模式 李会军 .NET设计模式系列文章 C#面向对象设计模式纵横谈系列课程 (2).net 2.0 海东的...

长征2号
2017/12/28
0
0
C#学习笔记——TCP通讯

服务端:TcpListener 客户端:TcpClient、NetworkStream (要熟悉的类,请参照MSDN。) TCP客户端: 界面: 代码: using System; using System.Collections.Generic; using System.Compone...

zting科技
2017/01/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring+jpaNo transactional EntityManager available

TransactionRequiredException: No transactional EntityManager availableEntityManager执行以下方法(refresh, persist, flush, joinTransaction, remove, merge) 都需要需要事务i......

wpfc
7分钟前
0
0
八幅漫画理解使用JSON Web Token设计单点登录系统

八幅漫画理解使用JSON Web Token设计单点登录系统 Sep 07, 2015 in Engineering 上次在《JSON Web Token - 在Web应用间安全地传递信息》中我提到了JSON Web Token可以用来设计单点登录系统。...

祖冲之
10分钟前
0
0
Spring框架中的设计模式(三)

Spring框架中的设计模式(三) 原创: 瑞查德-Jack 在之前的两篇文章中,我们看到了一些在Spring框架中实现的设计模式。这一次我们会发现这个流行框架使用的3种新模式。 本文将从描述两个创意...

瑞查德-Jack
13分钟前
0
0
[MicroPython]TPYBoard智能小车“飞奔的TPYBoard装甲一号”

智能小车作为现代的新发明,是以后的发展方向,他可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。智能小车能够实时显示时间、速度、里程,具...

bodasisiter
14分钟前
0
0
桌面虚拟化VDI(Virtual Desktop Infrastructure)

为了保证员工(客户)不把公司的资料复制、传输给别人。可以把员工平时办公放在服务器上做。所以使用桌面虚拟化。就是把一个服务器虚拟出很多桌面系统(如:windows)。 桌面虚拟化最大的优势...

王坤charlie
22分钟前
2
0
自我审视及职业规划

啊哈,不知不觉已经工作了3年了。程序员作为一门技术工作,如果分级的话我的能力如何呢?该怎么提升呢? 话说,我现在的能力属于中低级的层次吧,努力在向高级努力。为什么这么说呢: 因为我觉...

一口今心
24分钟前
1
0
《PHP和MySQL Web 开发》 第12章 MySQL高级管理

我决定好好写学习笔记了,对应上书上的目录和重要信息。不瞎jb写了。从这章开始吧,然后之前写的会编辑后重发。嗯,就酱。 12.1 深入理解权限系统 妈蛋 开头就卡住了。。。我先回去修改之前的...

十万猛虎下画山
25分钟前
1
0
Python 3.6:多态的实现

多态的作用不用多说,C++用如下条件来实现多态: 要有继承 要有虚函数函数重写 要有父类指针(父类引用)指向子类对象 实际上C++使用VPTR指针来完成这个事情,其是设计模式的基础,软件分层的基...

全部原谅
25分钟前
0
0
纯Python实现鸢尾属植物数据集神经网络模型[图]

纯Python实现鸢尾属植物数据集神经网络模型[图]: 尝试使用过各大公司推出的植物识别APP吗?比如微软识花、花伴侣等这些APP。当你看到一朵不知道学名的花时,只需要打开植物识别APP,拍摄一张...

原创小博客
27分钟前
1
0
2018安卓巴士开发者大会打造Android技术盛宴

2018安卓巴士开发者大会打造Android技术盛宴2018安卓巴士开发者大会将于8月25日在上海举行,作为中国最具前沿性、专业性的安卓技术会议,将邀请来自爱奇艺、阿里、饿了么等知名企业的一线工程...

逆鳞龙
29分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部