程序的入口点

Main函數

程序的入口点

每一个C#程序都必须包含一个类,该类中拥有名为Main的方法。在前文展示的示例中,这个方法定义在名为Program的类里。

不过现在新版的C#,可以不用写Main函数,默认就是Main函数的函数体。

  • C#程序的执行起点是Main方法内的第一条代码指令。
  • 方法名Main首字母必须大写。

Main方法最简写法:

static void Main( )
{
    代码语句
}Code language: C# (cs)

Main函数多个也不行,没有也不行,就只能一个。

为了给大家演示,我们这里使用VS2022创建.NET Framework项目。单支持windows版本的。

读者选择下面的这个控制台项目。

版本这里,我们选择最新的.NET 4.8.1的版本。

默认我们的Program.cs的内容如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HelloDemo
{
    internal class Program
    {
        static void Main(string[] args)
        {
        }
    }
}
Code language: C# (cs)

前面是引入多个命名空间,我们可以使用这些命名空间提供的类。这些都是.NET内置的类。

我们在Main函数中输入一句代码:

Console.WriteLine(“hello foxdevelop.com”);

点击VS上面的绿色三角形 Start 运行程序。

程序会默认执行Main中的第一句代码。

下面我们复制一个Main出来,立马报错

原因是“同一个命名空间”下面不能有相同的函数。那么我们创建两个不同的命名空间。

现在正常,没有红色的波浪线了,但是我们去编译

点击Start

编译报错了,并且底部的error list 窗口显示错误

如果读者没有显示这个Error List 窗口,可以到菜单栏中把它显示出来。

错误list窗口中,会告诉我们那个地方出错了

空白字符(Whitespace)

代码中的空白字符指不会产生可见输出的字符。编译器会忽略源代码里的空白字符,开发者使用空白字符是为了让代码结构清晰、便于阅读。
常见空白字符包含:

  • 空格(Space)
  • 制表符(Tab)
  • 换行符(New line)
  • 回车符(Carriage return)

示例:下面两段代码视觉格式完全不同,但编译器会做等同处理

// 排版工整版本
Main()
{
    Console.WriteLine("Hi, there!");
}

// 紧凑连写版本
Main(){Console.WriteLine("Hi, there!");}Code language: C# (cs)

如下是一个正常的Main函数

        static void Main(string[] args)
        {
            Console.WriteLine("hello foxdevelop.com");
        }Code language: C# (cs)

如下是我们把它的空白部分去掉,变得很拥挤后,程序一样可以正常编译,对于编译器来说没区别。

static void Main(string[] args){Console.WriteLine("hello foxdevelop.com");}Code language: C# (cs)

语句(Statements)

C#的语句和C、C++语法相似。本节介绍语句通用格式,各类细分语句将在后面讲解。
语句是一行源码指令,用于定义数据类型,或是命令程序执行某一项操作。
简单语句必须以分号 ; 结尾。如下两段连续简单语句:第一条定义整型变量var1并赋值5;第二条将变量值打印至控制台窗口。

int var1 = 5;
System.Console.WriteLine("The value of var1 is {0},wellcome to foxdevelop.com", var1);Code language: C# (cs)

以上的Main函数中有两条语句,我们前面都一直是一条语句。上面代码先定义一个var1的变量,是整型来,存储一个5的值进去,然后第二句代码是打印一行文本到控制台中,文本中有一个{0},这是一个占位符,会把后面的var1填充进去。

代码块(Blocks)

代码块由一对匹配大括号包裹零条或多条语句组成,在语法层面整体视作单条语句

将上例两条语句放入一对大括号,即可构成代码块:

            {
                int var1 = 5;
                System.Console.WriteLine("The value of var1 is {0},wellcome to foxdevelop.com", var1);
            }Code language: C# (cs)

代码块核心规则:

  1. 当语法要求只写一条语句,但业务需要多条操作时,用代码块包裹所有语句。
  2. 部分语法结构强制要求使用代码块,不能用单条语句替代。
  3. 简单语句末尾需要分号,但代码块结尾不加分号。(编译器允许在}后写分号,会被识别为空语句,但属于不规范写法)

图示说明:

{
    int var2 = 5; // 语句末尾带结束分号
    System.Console.WriteLine("The value of var1 is {0}", var1); // 语句末尾带结束分号
} // 大括号末尾无结束分号Code language: C# (cs)

我们正常的语句中,末尾的;

如下是完整例子,读者可以拷贝运行

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HelloDemo
{
    internal class Program
    {
        static void Main(string[] args)
        {
            {
                int var1 = 5;
                System.Console.WriteLine("The value of var1 is {0},wellcome to foxdevelop.com", var1);
            }; ; ; ;
        }
    }
}
Code language: C# (cs)

Previous:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注