2.1 C#基础语法
2.1.1 C#程序结构
在讲解 C# 的基本语法之前,让我们先来了解一下一个简单的 C# 程序是由哪些部分构成的
2.1.1.1 主体结构
一个 C# 程序主要包括以下几个部分:
-
命名空间声明; -
一个类(class); -
类方法; -
类属性; -
一个 Main 方法; -
语句和表达式; -
注释。
比如:
using System;
namespace c.biancheng.net
{
class Program
{
static void Main(string[] args)
{
/*第一个C#程序*/
Console.WriteLine("Hello World!");
Console.ReadKey();
}
}
}
这部分代码会在命令行窗口输出
Hello World!
2.1.1.2 结构解读
对上述解读进行解读:1.using System;using 关键字用来在程序中引入 System 命名空间,一个程序中可以有多个 using 语句。2.namespace c.biancheng.netnamespace 关键字用来声明一个命名空间,“c.biancheng.net”则是命名空间的名字。命名空间是类的集合,上面代码中名为“c.biancheng.net”的命名空间中包含了一个名为“Program”的类。
-
class Program
class 关键字用来定义一个类,“Program”则是类的名为,类中通常用来存放程序中要使用的数据和函数(也叫方法)。
-
static void Main(string[] args)
此行代码中,Main 为定义的函数名称,Main 函数是整个 C# 程序的入口,其中包含了程序运行时需要执行的操作。static 和 void 都是用来修饰 Main 函数的关键字,具体含义后面我们会详细介绍。
-
"/第一个C#程序 ***/"
这是程序的注释,当程序运行时被/* */
包裹的内容将被编译器忽略,不会执行。注释主要用来对我们所写的代码进行说明。
-
Console.WriteLine("Hello World!");
此行代码用来在命令行窗口中输出“Hello World!”。WriteLine 是 System 命名空间中定义的 Console 类里面的方法,用来输出一些消息。
-
Console.ReadKey();
此行代码是针对 VS.NET 用户的,它会使程序进入等待状态,敲击键盘上的任意一个按键即可让程序继续运行。之所以需要这行代码,是因为命令行窗口会在程序运行结束后自动关闭,这会导致我们想要输出的内容一闪而过,加入此行代码则可以避免这种情况。 using 关键字用来在程序中引入 System 命名空间,一个程序中可以有多个 using 语句。 另外,还有以下几点需要注意:
C# 区分大小写; 所有语句和表达式都必须以英文的分号 ;
结尾;程序从 Main 函数开始执行; 与 Java 不同,程序文件名可以与类名不同; 代码中出现的 {
和}
都是成对出现的,用来标记代码块,{ }
中包裹的代码可以看作是一个整体。
2.1.1.3 编译执行程序
命令行来编译 C# 程序:
新建一个文本文件,并在其中添加上面的代码; 将文件保存为 helloworld.cs,注意文件得格式是 .cs
;打开 CMD 命令行工具,然后转到 helloworld.cs 文件所在的目录; 在命令行工具中输入 ~~csc helloworld.cs~~
~~命令,然后按回车键进行编译; ~~(.NetSDK6/7已经弃用,请自行查询官网)如果代码中没有错误,那么则会在当前目录下生成一个名为 helloworld.exe 的可执行文件; 在命令行工具中输入生成文件的名字 helloworld 或者 helloworld.exe 即可执行您的程序,当然也可以直接双击运行生成的 helloworld.exe 文件; 此时您就可以在屏幕上看到输出的“Hello World!”了。
使用 Visual Studio 来编译和执行 C# 程序步骤:
启动 Visual Studio; 在菜单栏上依次选择“文件”->“新建”->“项目”; 从模板中选择“控制台应用(.NET Code)”,然后点击“下一步”; 为您的项目指定项目名称、位置、解决方案等信息,然后单击“创建”按钮; 在代码编辑器中编写上面示例中的代码; 单击运行按钮或按 F5 键即可执行项目中的代码,这时将会弹出一个命令行窗口,并在其中打印“Hello World!”。
注意: 在使用csc
命令时提示“csc不是内部或外部命令...”,则说明需要将 .NET Framework 添加到环境变量中。具体操作步骤如下:
右键“我的电脑”或者“此电脑”,在弹出的菜单中选择“属性”; 在弹出的窗口中选择“高级系统设置”; 选择“环境变量”; 在弹出的窗口中找到系统变量,并选择其中的“Path”变量,然后点击“编辑”按钮或者双击来对“Path”变量进行编辑; 将“C:WindowsMicrosoft.NETFrameworkv4.0.30319”添加到环境变量的最后,然后点击“确定”;(注意:所有打开的窗口都要点击一下“确定”按钮,否则可能添加失败。)
2.1.1 C#代码基本格式
编写C#程序时,代码需要放在一个类的内部,在定义类时需要使用关键字 class
,格式如下:
[权限修饰符] class 类名{
程序代码
}
-
C#中代码分为:结构定义语句、功能执行语句
结构定义语句:声明一个类或者方法 功能执行语句:实现具体功能,每条功能执行语句必须要使用(**英文 ;**)结束
-
C#需要严格区分大小写
比如:不能将关键字
class
写成Class
-
代码书写通常会使用缩进格式, 不是必须的,为了代码美观,便于阅读
2.1.2 C# 的注释
注释主要用于对程序中的某些代码进行解释说明,不会对注释进行编译 C# 中有3种注释:单行、多行、文档
-
单行注释 用于对程序的某一行进行解释,用符号: **//**
比如:
int a = 10 ; //这是定义一个整型变量
-
多行注释
注释多行内容,以符号 **/*开头**
,***/结尾**
比如:
/* int a=10;
int x=5; */
-
文档注释
用于对类或者方法进行描述说明,在类或方法前面连续输入 3个 **/**
,就会自动生成文档注释,自己手动填写类或方法的描述信息。 比如:
///<summary>
///这是文档注释,添加方法
/// </summary>
static void Add(){
}
其他常用文档注释:、、、、、等等
2.1.3 C# 标识符
标识符是⽤来识别类、变量、函数或其它任何⽤户定义的项⽬。 在C#中,类的命名必须遵 循如下规则:
标识符必须有以字母、下划线或@开头,后⾯可以跟⼀系列的字母、数字、下划 线(_)、@符号。 标识符中的第⼀个字符不能是数字。 标识符必须不包含任何嵌⼊的空格或者符号,⽐如? - +! # % ^ & * ( ) [ ] { } . ; : " ' / 标识符不能是C#关键字。除⾮它们有⼀个@前缀。⽐如@if是有效的标识符,但if 不是,因为if是关键字 标识符必须区分⼤⼩写,⼤写字母和⼩写字母被认为是不同的字母。 不能与C#的类库名称相同。
比如: 合法标识符:
username
username123
user_name
_userName
不合法标识符:
123user
class
if
99.99
Hello Wolrd
标识符命名除了要严格遵循以上规则外,为了代码可读性,可遵循以下规范:
大驼峰:类名、方法名、属性名中的每一个单词首字母都大写,比如:ArrayList、UserName、Sex、Age。 小驼峰:字段名、变量名的首字母小写,之后的每一个单词首字母都大写,比如:age、userName。 见名只意:看见命名就能很清楚知道代表的含义,比如:age代表年龄、userName代表用户名。 常量名的每一个首字母都大写,比如:MAX_DAY、USERNAME。
2.1.4 C#中的关键字
关键字是预定义的保留标识符,对编译器有特殊意义。 除⾮前⾯有 @ 前缀,否则不能在程 序中⽤作标识符。 例如,
@if
是有效标识符,⽽if
则不是,因为 if 是关键字。
在 C# 中,有些标识符在代码的上下文中有特殊的意义,如 get 和 set,这些被称为上下文关键字(contextual keywords)。
上下文关键字仅在⼀部分程序上下⽂中有特殊含义,可 以在相应上下⽂范围之外⽤作标识符。 ⼀般来说,C# 语⾔中新增的关键字会作为上下⽂关 键字添加,以免破坏⽤旧版语⾔编写的程序。
保留关键字 | ||||||
---|---|---|---|---|---|---|
abstract | as | base | bool | break | byte | case |
catch | char | checked | class | const | continue | decimal |
default | delegate | do | double | else | enum | event |
explicit | extern | false | finally | fixed | float | for |
foreach | goto | if | implicit | in | in (generic modifier) | int |
interface | internal | is | lock | long | namespace | new |
null | object | operator | out | out (generic modifier) | override | params |
private | protected | public | readonly | ref | return | sbyte |
sealed | short | sizeof | stackalloc | static | string | struct |
switch | this | throw | true | try | typeof | uint |
ulong | unchecked | unsafe | ushort | using | virtual | void |
volatile | while | |||||
上下文关键字 | ||||||
add | alias | ascending | descending | dynamic | from | get |
global | group | into | join | let | orderby | partial (type) |
partial (method) | remove | select | set |
2.1.5 常量
常量是固定值,程序执行期间不会改变。常量可以是任何基本数据类型,比如整数常量、浮点常量、字符常量或者字符串常量,还有枚举常量。 常量可以被当作常规的变量,只是它们的值在定义后不能被修改。
-
整数常量
整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,没有前缀则表示十进制。 整数常量也可以有后缀,可以是 U 和 L 的组合,其中,U 和 L 分别表示 unsigned (无符号)和 long(长整型)。后缀可以是大写或者小写,多个后缀以任意顺序进行组合。 这里有一些整数常量的实例:
212 /* 合法 */
215u /* 合法 */
0xFeeL /* 合法 */
078 /* 非法:8 不是一个八进制数字 */
032UU /* 非法:不能重复后缀 */
以下是各种类型的整数常量的实例:
85 /* 十进制 */
0213 /* 八进制 */
0x4b /* 十六进制 */
30 /* int */
30u /* 无符号 int */
30l /* long */
30ul /* 无符号 long */
-
浮点常量
一个浮点常量是由整数部分、小数点、小数部分和指数部分组成。您可以使用小数形式或者指数形式来表示浮点常量。 这里有一些浮点常量的实例:
3.14159 /* 合法 */
314159E-5L /* 合法 */
510E /* 非法:不完全指数 */
210f /* 非法:没有小数或指数 */
.e55 /* 非法:缺少整数或小数 */
使用小数形式表示时,必须包含小数点、指数或同时包含两者。使用指数形式表示时,必须包含整数部分、小数部分或同时包含两者。有符号的指数是用 e 或 E 表示的。
-
字符常量
字符常量是括在单引号里,例如,'x',且可存储在一个简单的字符类型变量中。一个字符常量可以是一个普通字符(例如 'x')、一个转义序列(例如 't')或者一个通用字符(例如 'u02C0')。 在 C# 中有一些特定的字符,当它们的前面带有反斜杠时有特殊的意义,可用于表示换行符(n)或制表符 tab(t)。在这里,列出一些转义序列码:
转义序列 | 含义 |
---|---|
字符 | |
' | ' 字符 |
" | " 字符 |
? | ? 字符 |
a | Alert 或 bell |
b | 退格键(Backspace) |
f | 换页符(Form feed) |
n | 换行符(Newline) |
r | 回车 |
t | 水平制表符 tab |
v | 垂直制表符 tab |
ooo | 一到三位的八进制数 |
xhh . . . | 一个或多个数字的十六进制数 |
以下是一些转义序列字符的实例:
using System;
namespace EscapeChar{
class Program{
static void Main(string[] args){
Console.WriteLine("HellotWorldnn");
Console.ReadLine();
}
}
}
尝试一下 当上面的代码被编译和执行时,它会产生下列结果:
Hello World
-
字符串常量
字符常量是括在双引号 "" 里,或者是括在 @"" 里。字符串常量包含的字符与字符常量相似,可以是:普通字符、转义序列和通用字符 使用字符串常量时,可以把一个很长的行拆成多个行,可以使用空格分隔各个部分。 这里是一些字符串常量的实例。下面所列的各种形式表示相同的字符串。
"hello, dear"
"hello,
dear"
"hello, " "d" "ear"
@"hello dear"
-
定义常量
常量是使用 const 关键字来定义的 。定义一个常量的语法如下:
const <data_type> <constant_name> = value;
下面的代码演示了如何在程序中定义和使用常量:
using System;
namespace DeclaringConstants{
class Program{
static void Main(string[] args){
const double pi = 3.14159; // 常量声明
double r;
Console.WriteLine("Enter Radius: ");
r = Convert.ToDouble(Console.ReadLine());
double areaCircle = pi * r * r;
Console.WriteLine("Radius: {0}, Area: {1}", r, areaCircle);
Console.ReadLine();
}
}
}
尝试一下 当上面的代码被编译和执行时,它会产生下列结果:
Enter Radius:
3
Radius: 3, Area: 28.27431
发表评论