C#是一门基于.NET的高级语言,正是因为C#处于.NET温暖的怀抱,所以许多C#程序员,甚至许多C#高级程序员对.NET在内存和指令等本质问题上认识不够。况且有许多使用C#的程序员在使用ASP.NET技术进行网站开发,他们有的从脚本语言转型而来,有的在没有充分学习C#的情况下就投入了开发工作,那么他们可能对本质问题的认识就更差一点。但是笔者认为,不管怎么样,都非常有必要更深入理解语言背后的机制,而不仅仅停留在掌握API使用的层次上。只有这样,你才能意识到很多BUG的关键点和性能问题的关键点,并且理解那些高级的特性。
本课程的目的是讲授C#编程语言的基础知识和工作原理。
___________________________________________________________________________________________________________________________________
1.1 一个简单的C#程序
using System;
namespace oneapp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("hello!");
}
}
}
1行:告诉编译器这个程序使用System命名空间的类型
3行:声明一个新命名空间,名称为oneapp
5行:声明一个新的类类型,名称为Program
7行:声明一个名称为Main的方法作为类Program的成员
9行:只包含一条单独的、简单的语句,这一行组成了Main的方法体
2.2 标识符和关键字
标识符识一种字符串,用来命名如变量、方法、参数和许多后面讲要阐述的其他程序结构之类的东西。
- 字母和下划线(a-z、A-Z)可以用在任何位置。
- 数字不能放在首位,但可以放在其他的任何地方。
- @字符可以放在标识符的首位,但不能放在其他任何地方。虽然允许使用@字符,但不推荐作为常用字符。
//语法上有效,但是不应该这样做
int totalCycleCount
int TotalCycleCount
int TotalcycleCount
2.2.1命名约定
对于大多数标识符,应该使用Pascal大小写风格。在这种风格中,连接成标识符的每个单词都首字母大写。例如FirstName和LastName。
推荐的标识符命名风格
命名风格 | 描述 | 使用建议 | 示例 |
Pascal大小写 | 标识符中每个单词都首字母大写 | 用于类型名和成员名 | CarDeck,DealersHand |
Camel大小写 | 除第一个单词以外,标识符中所有单词都首字母大写 | 用于本地变量和方法参数 | totalCycleCount,random-SeedParam |
全大写 | 标识符由全大写字母组成 | 仅用于缩写词 | IO,DMA,XML |
虽然这是建议的指导方针,但很多组织使用其他的约定,尤其是在成员字段的命名方面,这些内容将在第二章介绍。
有两个公共约定如下所示:
- 字段名称以下划线开头:_highTemp、_LowTemp。
- 字段名以m_开头:m_highTemp、m_LowTemp。
这两种方法都有优势,能立刻显示这些标识符是字段名称。
2.2.2关键字
关键字是用来定义C#语言的字符串记号。
关于关键字,一些应该知道的重要内容如下:
- 关键字不能被用作变量名或任何其他形式的标识符,除非以@字符开始。
- 所有C#关键字全部由小写字母组成,但是.NET类型名使用Pascal大小写约定。
C#关键字
abstract | const | extern | int | out | short | typeof |
as | continue | false | interface | override | sizeof | uint |
base | decimal | finally | internal | params | stackalloc | ulong |
bool | default | fixed | is | private | static | unchecked |
break | delegate | float | lock | protected | string | unsafe |
Byte | do | for | long | public | struct | ushort |
case | double | foreach | namespack | readonly | switch | using |
catch | else | goto | new | ref | this | virtual |
char | enum | if | null | return | throw | void |
checked | event | implicit | object | sbyte | true | volatile |
class | explicit | in | operator | sealed | try | while |
上下文关键字是仅在特定的语言结构中充当关键字的标识符。在那些位置,他们有特别的含义。但和关键字不同,关键字不能被用作标识符,而上下文关键字可以在其他部分代码中被用作标识符。
c#上下文关键字
add | ascending | by | descending | dynamic | equals | from |
get | global | group | into | join | let | on |
orderby | partial | remove | select | set | value | var |
where | yield |