C#语法和约定

3609 更新于: 2021-05-22 读完约需 10 分钟

前言

正如之前我们创建的第一个C#控制台应用程序的Program.cs所见,从代码上看上去,C#感觉和C++, Java非常相似,但更具备其独特的语法和特性。

在你开始接触C#的时候也许会感觉这些独特的语法和特性比较吃力。但当你不断深入学习并能熟练运用c#后,你会发现所使用的语法和代码结构是非常合理的,并且可以编写出非常易读的代码,而不需要花费太多精力。

C#约定

1.每条C#语句均以英文状态的分号结束

Console.ReadLine()
Console.ReadLine();
Console.ReadLine();

上面哪条语句是正确的呢?

可以将多条语句写在一行上,如:

x =  y + 5; z = y + 2;

这种写法编译器不会报错,但为了程序代码的可读性,建议一条语句单独一行,而不建议一行写多条语句。

一个表达式也是一条语句,比如:

x++;

表达式将在后面的教程中介绍

2.C#是大小写敏感(即字母区分大小写)

console.ReadLine();
Console.readLine();
Console.readline();
Console.Readline();
Console.ReadLine();

请在控制台应用程序中健入以上内容,试一试哪条语句是正确的呢?

3.一个C#可执行程序只能同时指定一个程序入口点

一个C#可执行程序只能同时指定一个程序入口点。

3.1 什么是程序入口点?

程序入口点就是在程序启动时最开始要执行的地方。简单地说就是开发人员需要指定程序要从哪个地方开始执行。C#应用程序的入口方法为静态(static)的Main()方法,如我们前面创建的示例程序:

3.2 什么是可执行程序?

ConsoleApp1就是一个可执行程序,编译后生成的是ConsoleApp1.exe这个可执行文件。

ConsoleApp1的程序入口点为Program.cs中的Main这个静态方法。

所有的可执行程序的入口方法都是静态的Main方法,只是方法的参数有可能不一相同而已。

4. 忽略多余的空格

C#编译器在编译的时候会忽略掉多余的空格,不管这个空格是由空格符、回车符还是制表符产生的。这让你在编写C#代码的时候可以有更大的自己度去控制代码的格式。

图中标注的语句行包含了许多冗余的空格,这在C#语言的语法中是被允许,但编译器在编译的时候会自动将多余的空格移除掉。
或者你还可以使用Visual Studio的格式化命令(Ctrl+K,Ctrl+D或者Ctrl+K,Ctrl+F)将这些多余的空格格式化。

C#代码是由多条语句组成的,每条语句均以分号结束。通常情况下,为了程序的可读性,一条C#语句占一行,写完成一条后按回车写下一条语句,但一条语句跨行写也是可以的,编译器也是认可以,比如在一种语句很长的情况下需要分多行写,这时可以使用回车为此条语句进行换行。编译器在编译时会自动忽略这些换行符。

5. 格式化与代码缩进

5.1 格式化代码

C#语言代码编写中,为了代码的美观以及可读性,每个块的代码是有一定的缩进的,Visual Studio也提供了默认的C#代码格式化工具、命令,上文已经提到过,分别为:Ctrl+K,Ctrl+DCtrl+K,Ctrl+F,其中前者是格式化当前打开的整个文档,而后者是格式化当前选中的文档内容。

5.2 代码缩进

缩进:通常以Tab键进行缩进,一个Tab制表符的大小占4个字符位,这些格式化参数是可以通过Visual Studio的选项进行设置的。

上图中数字标注均为缩进,每个块之间缩进为设置为了一个制表符的大小(4个字符位)

6. 代码块

在C#编程语言中,被一对大括号({})包裹的代码称为一个代码块,代码块的目的是为了让代码层次清晰,结构分明。定义或者声明如:命名空间,类,接口,方法,结构时必须有代码块包裹,如图:

包裹代码的代码块大括号必须成对出现,即在一个代码块中,不能只出现左括号({)或者只出现右括号(}),下图的代码块未关闭,因此,Visual Studio编译器会报错:

请仔细观察上图中是哪个代码块未关闭呢?

7. 语句注释

7.1 为什么要使用注释?

  • 暂时不需要这行/段代码,但又不想删除,可能以后会还原
  • 对一行/段代码的作用进行注解
  • 对类,类成员进行文档摘要说明,方便在调用时快速查看类,类成员的说明

7.2 注释的种类

  • 双斜杠:注释单行
  • /**/ :注释单行或者多行
  • ///summary 文档摘要
  • //:TODO

代码注释在实际编码中的示例如下图:

类、成员添加文档摘要

如果需要给C#的类或者其成员添加文档摘要,可以使用如下标识块:

/// <summary>
/// 摘要内容
/// </summary>

注意:将这个标识块(summary)放在类或者成员的紧挨着的上一行即可(中间不能隔行)

代码结构和构成

在了解了C#的基本语法和约定之后,对照ConsoleApp1这个项目的Program.cs为实例,详细讲解C#的代码结构,如下:

using System;

namespace ConsoleApp1
{
    /// <summary>
    /// 类名
    /// </summary>
    class Program
    {
        /// <summary>
        /// 程序入口方法
        /// </summary>
        /// <param name="args">入口方法的参数</param>
        static void Main(string[] args)
        {
            // 向控制台输出:你好,欢迎来到C#的世界
            Console.WriteLine("你好,欢迎来到C#的世界");
            /* 你也可以写成如下的语句 */
            //System.Console.WriteLine("你好,欢迎来到C#的世界");
            /*
             * 等待用户按键
             */
            Console.ReadLine();
            // 你也可以使用如下的方法来等待用户的按键
            //Console.ReadKey();
        }
    }
}

图解如下:

1.使用using关键字引入命名空间。
2.声明一个名为ConsoleApp1的命名空间。
3.声明一个名为Program的类。
4.声明一个名为Main的方法(此方法作为程序的入口点),此方法使用static修饰,表示是一个静态方法,void关键字表示这个方法没有返回值。注意:一个应用程序只能有一个静态的Main方法
5.指定一个string的数据类型。
6.声明name1作为变量名。
7.将Rector设置为变量name1的值。
8.调用Console.WriteLine()方法,向控制台输出文本

学到这里,你可能还不能完全理解以上所介绍C#知识点。你完全不用担心也不需要知道示例中每条语句的具体含义。因为本节我们主要是了解和认识C#的基本语法,这些知识点会在后续的教程中不断地提及和强化。随着学习的深入和不断地使用,自然而然就熟悉了。

学习任何一门语言都需要一个过程,要不断地了解知识点然后动手编写代码练习,没有捷径可走。就像小孩学习走路,多摔几个跟头自然而然就会了。

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

本文永久链接码友网 » C#程序设计基础(入门篇) » C#语法和约定 分享:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册