【C#基础】C# 程序基础语法解析
创始人
2024-05-25 14:24:15
0
序号系列文章
0【C#基础】初识编程语言C#
1【C#基础】C# 程序通用结构总结

文章目录

  • 前言
  • 基础语法
    • 1. using 关键字
    • 2. namespace 关键字
    • 3. class 关键字
    • 4. 成员字段
    • 5. 成员方法
    • 6. Main 方法
    • 7. new 关键字
    • 8. 标识符
    • 9. 关键字
  • 结语

前言

😄 大家好,我是writer桑,前面一章已经学习了C#的程序结构,那本章就开始学习C#程序中基础的语法,希望看完大家能够有所收获,感谢支持!


基础语法

首先 C# 作为一门面向对象的编程语言,有着许多区别于其他语言不同的地方,其中包括关键字的运用、类成员、标识符等等。本章从这几个方面进行学习,以便对搭建 C# 程序有个初步的认识。

首先以下面 Square 程序的实现做示例,以借此讨论 C# 的基础语法。

using System;		// using 指令 namespace SquareApplication		// namespace 命名空间
{internal class Square{// 成员字段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 ExecuteSquare{// Main 方法的声明static void Main(string[] args){Square s = new Square();	// 创建类型的新实例s.Acceptdetails();s.Display();Console.ReadLine();}}
}

1. using 关键字

在 C# 程序中 using 关键字有三种用法:

1,using 指令导入指定的命名空间

using System;  
  • using 指令允许使用在命名空间中定义的类型,而无需指定该类型的完全限定命名空间。using 指令以基本形式从单个命名空间导入所有类型。
  • 程序中 using System 表示导入 System 命名空间, 同时一个程序允许有多个 using 指令的存在 ,这种用法类似于 Python 中的 Import 语法。

2, using 别名指令为名称空间或类型创建别名。

using systext = System.Text;
// using systext;  // 编译器错误:未能找到类型或命名空间名"systext"
  • 创建 using 别名指令,以便更易于将标识符限定为命名空间或类型。 在任何 using 指令中,都必须使用完全限定的命名空间或类型,而无需考虑它之前的 using 指令。
  • 注意,using 指令的声明中不能使用 using 别名。否则会生成编译器错误;而且 using 别名指令的右侧不能有开放式泛型类型。 例如,不能为 List 创建 using 别名,但可以为 List 创建 using 别名。

3, using 语句定义一个范围,在此范围的末尾将释放对象。

// 注意 Square 类需要继承 IDisposable 接口
using (Square s = new Square())
{// use s..// 离开这个代码块资源会自动释放
}
  • 在程序编译阶段,编译器会自动将using语句生成为try-catch-finally语句,并在finally块中调用对象的Dispose方法,来清理资源。
  • using 语句提供可确保正确使用 IDisposable 对象的方便语法。 await using 语句可确保正确使用 IAsyncDisposable 对象。 C# 语言支持实现 System.IAsyncDisposable 接口的异步可释放类型。

2. namespace 关键字

namespace 关键字用于声明命名空间,在 C# 程序有两种用法:

1,namespace 关键字用于声明包含一组相关对象的作用域。可以使用命名空间来组织代码元素并创建全局唯一类型。

namespace SquareApplication
{class Square{public void SquareMethod(){System.Console.WriteLine("SquareMethod inside SquareNamespace");}}
} 
  • 其他文件可以直接使用 using 指令引用 SquareApplication 命名空间。
  • 命名空间的名称必须是有效的 C# 标识符名称。

2,从 C# 10 开始,可以为该文件中定义的所有类型声明一个命名空间,如以下示例所示:

namespace SquareApplication;class Square
{public void SquareMethod(){System.Console.WriteLine("SquareMethod inside SquareNamespace");}
}
  • 这种新语法的优点是更简单,这节省了水平空间且不必使用大括号。 提高了代码的可读性。

3. class 关键字

在 C# 程序中使用 class 关键字声明类,示例如下:

class Square
{// Square details
}class ExecuteSquare
{// ExecuteSquare details
}
  • 用 class 关键字声明的类型为引用类型,方便其它代码创建类实例对象。
  • 使用 class 关键字声明的类名称必须是有效的 C# 标识符名称。
  • class 关键字前面是访问级别,默认为 internal 类型, 即同一个程序集的对象可以访问。

4. 成员字段

变量声明语法: ;在 Square 类中声明了 width 和 length 两个成员字段:

private double length;		
private double width;
  • 成员字段是在类范围声明的变量。 变量是类的属性或数据成员,用于存储数据。
  • 变量的 data_type 声明必须是有效的 C# 数据类型,var_name 名称必须是有效的 C# 标识符名称。
  • data_type 前面是变量的访问级别,默认为 private 类型,即对象本身在对象内部可以访问。

5. 成员方法

方法声明语法: (Parameter List) { Method Body } ; Square 类包含了三个成员方法: AcceptDetails、GetArea 和 Display。

// 成员方法
public void Acceptdetails()
{// Method Body
}public double GetArea()
{// Method Body
}public void Display()
{// Method Body 
}
  • 成员方法定义类执行的操作。 方法可接受提供输入数据的参数,并可通过参数返回输出数据。 方法还可以不使用参数而直接返回值。
  • 在声明语法中 Access Specifier、Return Type、Method Name 分别表示访问说明、返回类型、方法名称。其中返回类型和名称必须声明,访问权限默认为 private, 即对象本身在对象内部可以访问 。

6. Main 方法

在 C# 程序中, Main 方法是应用程序的入口点:

static void Main(string[] args)
{// Main Method Body
}
  • Main 方法是程序控制开始和结束的位置, 它决定着当前类具体的行为。
  • Main 在类或结构中声,Main 必须是 static,它不需要是 public。且封闭类或结构不一定要是静态的。
  • Main 的返回类型可以是 void、int、Task 或 Task
  • 在 C# 9 之前程序必须声明 Main 方法,否则会报编译器错误, 而在 C# 9 之后(包含 C# 9)则可以使用顶级语句,无需应用程序中显式声明 Main 方法。

7. new 关键字

在 C# 程序中使用 new 运算符创建类型的新实例。 new 关键字还可用作成员声明修饰符或泛型类型约束。

  • 1,要创建类型的新实例,通常使用 new 运算符调用该类型的某个构造函数;可以使用带有 new 运算符的对象或集合初始值设定项实例化和初始化一个语句中的对象,如下所示:
// 创建类型的新实例 
Square s = new Square() 
{// 实例化 Square 类并在这设定初始值
};	
  • 2,new 修饰符可以显式隐藏从基类继承的成员。 隐藏继承的成员时,该成员的派生版本将替换基类版本。
// 使用 DerivedC.Invoke 隐藏了 BaseC.Invoke。
// 字段 x 不受影响,因为未使用类似名称将其隐藏。
public class BaseC
{public int x;public void Invoke() { }
}public class DerivedC : BaseC
{new public void Invoke() { }
}
  • 3,new 约束指定泛型类或方法声明中的类型实参必须有公共的无参数构造函数。 若要使用 new 约束,则该类型不能为抽象类型。
class ItemFactory where T : new()
{public T GetNewItem(){return new T();}
}

8. 标识符

标识符是分配给类型(类、接口、结构、记录、委托或枚举)、成员、变量或命名空间的名称。以下是 C# 标识符命名规则和约定:

命名规则:

有效标识符必须遵循以下规则:

  • 标识符必须以字母或下划线 ( _ ) 开头。
  • 标识符可以包含 Unicode 字母字符、十进制数字字符、Unicode 连接字符、Unicode 组合字符或 Unicode 格式字符。
  • 可以在标识符上使用 @ 前缀来声明与 C# 关键字匹配的标识符。 @ 不是标识符名称的一部分。 例如,@if 声明名为 if 的标识符。 这些逐字标识符主要用于与使用其他语言声明的标识符的互操作性。

命名约定:

除了规则之外,C # 程序的类型名称、命名空间和所有公共成员也应当遵循PascalCase(变量命名方法)。 以下为常见的约定:

  • 接口名称以大写字母 I 开头。
  • 属性类型以单词 Attribute 结尾。
  • 枚举类型对非标记使用单数名词,对标记使用复数名词。
  • 标识符不应包含两个连续的下划线 ( _ ) 字符。 这些名称保留给编译器生成的标识符。

9. 关键字

关键字是预定义的保留标识符,对编译器有特殊意义。 除非前面有 @ 前缀,否则不能在程序中用作标识符。 例如,@if 是有效标识符,而 if 则不是,因为 if 是关键字。

1,第一个表列出了是 C# 程序任意部分中的保留标识符的关键字:

保留关键字
abstractasbaseboolbreakbytecase
catchcharcheckedclassconstcontinuedecimal
defaultdelegatedodoubleelseenumevent
explicitexternfalsefinallyfixedfloatfor
foreachgotoifimplicitinintinterface
internalislocklongnamespacenewnull
objectoperatoroutoverrideparamsprivateprotected
publicreadonlyrefreturnsbytesealedshort
sizeofstackallocstaticstringstructswitchthis
throwtruetrytypeofuintulongunchecked
unsafeushortusingvirtualvoidvolatilewhile

2, 以下三个表列出了 C# 中的上下文关键字。 上下文关键字用于在代码中提供特定含义,但它不是 C# 中的保留字。 一些上下文关键字(如 partial 和where)在两个或多个上下文中有特殊含义。

上下文关键字
addandaliasascendingargsasyncawait
bydescendingdynamicequalsfromgetglobal
groupinitintojoinlet
托管(函数指针调用约定)
nameofnintnotnotnullnuintonor
orderbypartial(类型)partial(方法)recordremoveselectset
非托管(函数指针调用约定)
unmanaged(泛型类型约)valuevarwhen(筛选条件)
where(泛型类型约束)where(查询子句)withyield
  • 上下文关键字仅在一部分程序上下文中有特殊含义,可以在相应上下文范围之外用作标识符。
  • 一般来说,C# 语言中新增的关键字会作为上下文关键字添加,以免破坏用旧版语言编写的程序。

结语

✔️ 以上就是 C# 基础语法的介绍,希望能够对大家有所帮助。望大家多多支持,你们的支持就是笔者创作最大的动力!

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...