C#基本语法

原文:

https://www.runoob.com/csharp/csharp-program-structure.html

https://www.runoob.com/csharp/csharp-basic-syntax.html

 

一、C#的程序结构

一个 C# 程序主要包括以下部分:

  • 命名空间声明(Namespace declaration)
  • 一个 class
  • Class 方法
  • Class 属性
  • 一个 Main 方法
  • 语句(Statements)& 表达式(Expressions)
  • 注释

C# 文件的后缀为 .cs

以下创建一个 test.cs 文件,文件包含了可以打印出 "Hello World" 的简单代码:

using System;
namespace HelloWorldApplication
{
   class HelloWorld
   {
      static void Main(string[] args)
      {
         /* 我的第一个 C# 程序*/
         Console.WriteLine("Hello World");
         Console.ReadKey();
      }
   }
}

让我们看一下上面程序的各个部分:

  • 程序的第一行 using System; - using 关键字用于在程序中包含 System 命名空间。 一个程序一般有多个 using 语句。类似于python的import
  • 下一行是 namespace 声明。一个 namespace 里包含了一系列的类。HelloWorldApplication 命名空间包含了类 HelloWorld
  • 下一行是 class 声明。类 HelloWorld 包含了程序使用的数据和方法声明。类一般包含多个方法。方法定义了类的行为。在这里,HelloWorld 类只有一个 Main 方法。
  • 下一行定义了 Main 方法,是所有 C# 程序的 入口点Main 方法说明当执行时 类将做什么动作。
  • 下一行 /*...*/ 将会被编译器忽略,且它会在程序中添加额外的 注释
  • Main 方法通过语句 Console.WriteLine("Hello World"); 指定了它的行为。

    WriteLine 是一个定义在 System 命名空间中的 Console 类的一个方法。该语句会在屏幕上显示消息 "Hello World"。

  • 最后一行 Console.ReadKey(); 是针对 VS.NET 用户的。这使得程序会等待一个按键的动作,防止程序从 Visual Studio .NET 启动时屏幕会快速运行并关闭。

以下几点值得注意:

  • C# 是大小写敏感的。
  • 所有的语句和表达式必须以分号(;)结尾。
  • 程序的执行从 Main 方法开始。
  • 与 Java 不同的是,文件名可以不同于类的名称。

编译 & 执行 C# 程序:

上面代码保存为 helloworld.cs 文件
1.输入命令编译代码: csc helloworld.cs  -- 如果代码没有错误,命令提示符会进入下一行,并生成 helloworld.exe 可执行文件。
2.执行编译后的程序:.\helloworld.exe

若提示无法识别 csc 命令,需配置环境变量(Window10)
找到桌面上的“计算机”图标,右键单击,并在弹出的菜单中点击 “属性” --"高级系统设置"--"环境变量"--"系统变量",找到变量 Path, 添加一个路径 ;C:\Windows\Microsoft.NET\Framework\v2.0.50727\(注意,多个路径使用分号(;)隔开,Windows其他版本追加在后面即可)。
无法识别 csc 命令

 

二、C#五个修饰符的权限

修饰符 级别 适用成员
public 公开 对任何类和成员都公开, 无限制访问
protected 受保护的 仅仅对该类以及该类的派生类公开
private 私有 仅仅对该类公开
internal 内部的 只能在包含该类的程序集中访问该类(只限于本项目内访问)
protected internal 受保护的内部 只能在本类,派生类或者包含该类的程序集中访问(只限于本项目或是子类访问)

internal,英文含义是“内部的”,到底是指“同一命名空间”的内部,还是“同一程序集”的内部,其实这个内部就是“同一程序集”的内部,也就是说,internal修饰的方法或者属性,只要是在同一个程序集的中的其他类都可以访问,如果二者不在同一命名空间,只要使用using引用上相应的命名空间即可。

 

声明类、方法、字段、属性时不加访问权限修饰符时的访问权限是什么呢?
1. 声明命名空间、类,前面不加限制访问修饰符时,默认访问权限为 internal —— 访问仅限于当前程序集。
2. 声明类成员(域、属性、方法)默认为private)以及结构类型,前面不加限制访问修饰符时,默认访问权限为private —— 访问仅限于当前类。
3. 声明枚举类型以及接口类型,前面不加限制访问修饰符时,默认为public且只能为public(即使写也默认是public的) —— 访问不受限制。

 

三、基本语法

C# 是一种面向对象的编程语言。在面向对象的程序设计方法中,程序由各种相互交互的对象组成。相同种类的对象通常具有相同的类型,或者说,是在相同的 class 中。
例如,以 Rectangle(矩形)对象为例。它具有 length 和 width 属性。根据设计,它可能需要接受这些属性值、计算面积和显示细节。
让我们来看看一个 Rectangle(矩形)类的实现,并借此讨论 C# 的基本语法:

using System;
namespace RectangleApplication {
    class Rectangle {
        // 成员变量
        private double length;
        private 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 {
        // Main函数为程序入口,因此会从这里开始执行
        public 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 语句。类似于python的import。

 

class 关键字

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

 

C# 中的注释

注释是用于解释代码。编译器会忽略注释的条目。在 C# 程序中,多行注释以 /* 开始,并以字符 */ 终止,如下所示:

/* This program demonstrates
The basic syntax of C# programming 
Language */

 

单行注释是用 '//' 符号表示。例如:

}//end class Rectangle

 

成员变量

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

 

成员函数

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

 

实例化一个类

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

 

标识符

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

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

 

C# 关键字

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

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

下表列出了 C# 中的保留关键字(Reserved Keywords)和上下文关键字(Contextual 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          
上下文关键字
add alias ascending descending dynamic from get
global group into join let orderby partial
(type)
partial
(method)
remove select set      

 

posted @ 2022-08-11 21:26  我用python写Bug  阅读(157)  评论(0编辑  收藏  举报