C# 基本语法

C# 是一种面向对象的编程语言。在面向对象的程序设计方法中,程序由各种相互交互的对象组成。相同种类的对象通常具有相同的类型,或者说,是在相同的 class 中。

例如,以 Rectangle(矩形)对象为例。它具有 length 和 width 属性。根据设计,它可能需要接受这些属性值、计算面积和显示细节。

让我们来看看一个 Rectangle(矩形)类的实现,并借此讨论 C# 的基本语法:

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using System;
namespace RectangleApplication
{
class Rectangle
{
// 成员变量
double length;
double width;
public void Acceptdetails()
{
length = 4.5;
width = 3.5;
}
public double GetArea()
{
return length * width;
}
public void Display()
{
Console.WriteLine("Length: {0}", length);
Console.WriteLine("Width: {0}", width);
Console.WriteLine("Area: {0}", GetArea());
}
}

class ExecuteRectangle
{
static void Main(string[] args)
{
Rectangle r = new Rectangle();
r.Acceptdetails();
r.Display();
Console.ReadLine();
}
}
}

尝试一下 »
当上面的代码被编译和执行时,它会产生下列结果:

Length: 4.5
Width: 3.5
Area: 15.75

using 关键字

在任何 C# 程序中的第一条语句都是:
using System;
using 关键字用于在程序中包含命名空间。一个程序可以包含多个 using 语句。

class 关键字

class 关键字用于声明一个类。

  • 基本语法:
1
2
3
4
class 类名
{
//类中的内容
}

类名的命名规范?

  • 类名和创建的.cs文件尽量保持一致:
  • 类应该以 { 开头,以 } 结尾,类中的内容应该写在开始大括号和结束大括号中间的任意区域。

类中添加主入口 Main()

  • Main 方法的基本形式:
1
2
3
4
static void Main(string[] args)
{

}
  • 注:单独写一个Main单词,是没有任何实质含义的。

  • 运行程序时,编译器首先会试图去找Main()方法,然后按照代码的编写顺序执行;当Main()执行结束时,程序就结束了,如果当前类中除了Main()中还有其它内容,其它内容是不会被执行的。

语句

  • 语句写在方法中,一条语句默认以分号结尾语句中涉及的所有标点符号,全部应该使用英文状态下符号。
  • 一个方法中写多条语句,也可以0条语句。

C# 中的注释

注释的分类

单行注释: // 注释内容

  1. 一般是为一些语句添加单行注释;
  2. 解释作用

多行注释:

    /*
     * 注释内容
     * 注释内容
     * 注释内容
     .....
     */
  1. 程序中有多行不参与程序运行时可以为其添加多行注释
  2. /**/中间没有任何空格

文档注释:

  • 一般类,方法或属性添加文档注释

  • 基本语法:
    /// 后面的内容自动补全

  • 说明:

  • 常用的注释:文档注释 和 单行注释

C# 中 // 注释和 /// 注释的区别

/// 会被编译, // 不会

所以使用 /// 会减慢编译的速度(但不会影响执行速度)

/// 会在其它的人调用你的代码时提供智能感知

/// 也是一种注释,但是这种注释主要有两种作用:

  • 1.这些注释能够生成一个XML文件。这样呢,看起来会对程序的内容一目了然。
  • 2.以这种方式对你的类,属性,方法等等加上注释之后,当你在其他地方使用以这种方式加上的类,属性,方法等等地时候,黄色的提示框里面会把你写的注释显示出来,是你更加明白你要使用的功能的作用。
1
2
3
/// <summary>
///定义用户姓名属性,该属性为可读可写属性
/// </summary>

C# 编码的时候,常常涉及代码注释,常见的注释包括两类:

  • 1)单行注释。格式:// Comments
  • 2)多行注释。格式:/* Comments… */

C# 引入了新的 XML 注释,即我们在某个函数前新起一行,输入 ///,VS.Net 会自动增加XML格式的注释,这里整理一下可用的XML注释。 XML 注释分为一级注释(Primary Tags)和二级注释(Secondary Tags),前者可以单独存在,后者必须包含在一级注释内部。

注释的 3W 1H法则

  • what: 什么是注释?
    代码编写过程中,为程序添加一些解释说明性的文字。这些文字性内容不会参与程序的运行,方便开发者或内部开发更好的使用代码。
  • why: 为什么要使用注释 ?
    1. 良好的编程规范
    2. 帮助开发者更好的理解程序
    3. 编码过程中,某一条语句或多条语句不想参与程序运行,怎么办?注释
  • when: 什么时候使用注释 ?
    编码过程中
    学习过程中
  • how : 注释如何使用?

I 一级注释

1
2
3
4
5
6
7
8
9
10
<remarks>对类型进行描述,功能类似<summary>,据说建议使用<remarks>;
<summary>对共有类型的类、方法、属性或字段进行注释;
<value>主要用于属性的注释,表示属性的制的含义,可以配合<summary>使用;
<param>用于对方法的参数进行说明,格式:<param name="param_name">value</param>;
<returns>用于定义方法的返回值,对于一个方法,输入///后,会自动添加<summary><param>列表和<returns>
<exception>定义可能抛出的异常,格式:<exception cref="IDNotFoundException">;
<example>用于给出如何使用某个方法、属性或者字段的使用方法;
<permission>涉及方法的访问许可;
<seealso>用于参考某个其它的东东:),也可以通过cref设置属性;
<include>用于指示外部的XML注释;

II 二级注释

1
2
3
4
5
<c> or <code>主要用于加入代码段;
<para>的作用类似HTML中的<p>标记符,就是分段;
<pararef>用于引用某个参数;
<see>的作用类似<seealso>,可以指示其它的方法;
<list>用于生成一个列表;

另外,还可以自定义XML标签

让C#智能注释时显示为换行

在C#智能注释时,常常希望它能在开发时显示为换行,使得提示更加友好!原来一直想怎么实现,今天偶然发现原来如此简单,只需将 标记用于诸如

等标记内即可。

注释在开发时换行显示的办法

标记用于诸如

等标记内,使您得以将结构添加到文本中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/// <summary> 
/// 基类(第1行)
///<para>说明:(第2行)</para>
///<para>  封装一些常用的成员(第3行)</para>
///<para>  前面要用全角空格才能显示出空格来(第4行)</para>
/// </summary>
public class MyBase
{
/// <summary>
/// 构造函数(第1行)
///<para>说明:(第2行)</para>
///<para>  初始化一些数据(第3行)</para>
/// </summary>
public MyBase()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
}

img

成员变量

变量是类的属性或数据成员,用于存储数据。在上面的程序中,Rectangle 类有两个成员变量,名为 length 和 width。

成员函数

函数是一系列执行指定任务的语句。类的成员函数是在类内声明的。我们举例的类 Rectangle 包含了三个成员函数: AcceptDetails、GetArea 和 Display。

实例化一个类

在上面的程序中,类 ExecuteRectangle 是一个包含 Main() 方法和实例化 Rectangle 类的类。

标识符

标识符是用来识别类、变量、函数或任何其它用户定义的项目。在 C# 中,类的命名必须遵循如下基本规则:

  • 标识符必须以字母、下划线或 @ 开头,后面可以跟一系列的字母、数字( 0 - 9 )、下划线( _ )、@。
  • 标识符中的第一个字符不能是数字。
  • 标识符必须不包含任何嵌入的空格或符号,比如 ? - +! # % ^ & * ( ) [ ] { } . ; : “ ‘ / \。
  • 标识符不能是 C# 关键字。除非它们有一个 @ 前缀。 例如,@if 是有效的标识符,但 if 不是,因为 if 是关键字。
  • 标识符必须区分大小写。大写字母和小写字母被认为是不同的字母。
  • 不能与C#的类库名称相同。

C# 关键字

关键字是 C# 编译器预定义的保留字。这些关键字不能用作标识符,但是,如果您想使用这些关键字作为标识符,可以在关键字前面加上 @ 字符作为前缀。

在 C# 中,有些关键字在代码的上下文中有特殊的意义,如 get 和 set,这些被称为上下文关键字(contextual keywords)。

下表列出了 C# 中的保留关键字(Reserved Keywords)和上下文关键字(Contextual Keywords):

C# 中的保留关键字(Reserved Keywords)

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

上下文关键字(Contextual Keywords)

add alias ascending descending dynamic from get
global group into join let orderby partial(type)
partial(method) remove select set