【C#基础】C# 基础语法解析

这篇具有很好参考价值的文章主要介绍了【C#基础】C# 基础语法解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

序号 系列文章
0 【C#基础】初识编程语言C#
1 【C#基础】C# 程序通用结构

前言

😄 大家好,我是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<T> 创建 using 别名,但可以为 List<int> 创建 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 关键字

在 C# 程序中 namespace 关键字用于声明命名空间,在后来的版本中有新的用法。

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 关键字主要用于声明类

类是可在一个单元中就将字段和方法及其他函数成员结合起来的数据结构,在 C# 程序中属于最基本的类型。示例如下:

class Square
{
    // Square details
}

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

4. 成员字段

成员字段也就是在类范围中声明的变量

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

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

5. 成员方法

成员方法也即类中定义的可以执行的函数

方法声明语法:<Access Specifier> <Return Type> <Method Name>(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 方法是定义程序的入口点

在示例程序中,ExecuteSquare 类声明了 Main 方法:

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

7. new 关键字

在 C# 程序中可以使用 new 关键字创建实例、声明修饰符、作为类型约束。

1,new 运算符创建类型的新实例

// 创建类型的新实例 
Square s = new Square() 
{
    // 在这设定初始值
};	
  • 使用 new 运算符创建类型的新实例的同时会调用该类型的某个构造函数
  • 使用带有new运算符的对象或集合初始值设定项会实例化和初始化一个语句中的对象

2,new 关键字用作成员声明修饰符

// 使用 DerivedC.Invoke 隐藏了 BaseC.Invoke。
// 字段 x 不受影响,因为未使用类似名称将其隐藏。
public class BaseC
{
    public int x;
    public void Invoke() { }
}

public class DerivedC : BaseC
{
    new public void Invoke() { }
}
  • new 修饰符可以显式隐藏从基类继承的成员
  • 隐藏继承的成员时,该成员的派生版本将替换基类版本

3,new 关键字用作泛型类型约束

class ItemFactory<T> where T : new()
{
	public T GetNewItem()
    {
        return new T();
    }
}
  • new 约束指定泛型类或方法声明中的类型实参必须有公共的无参数构造函数。
  • 若要使用 new 约束,则该类型不能为抽象类型。

8. 标识符

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

命名规则:

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

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

命名约定:

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

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

9. 关键字

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

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

保留关键字
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 int interface
internal is lock long namespace new null
object operator out 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

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

上下文关键字
add and alias ascending args async await
by descending dynamic equals from get global
group init into join let
托管(函数指针调用约定)
nameof nint not notnull nuint on or
orderby partial(类型) partial(方法) record remove select set
非托管(函数指针调用约定)
unmanaged(泛型类型约) value var when(筛选条件)
where(泛型类型约束) where(查询子句) with yield
  • 上下文关键字仅在一部分程序上下文中有特殊含义,可以在相应上下文范围之外用作标识符。
  • 一般来说,C# 语言中新增的关键字会作为上下文关键字添加,以免破坏用旧版语言编写的程序。

结语

✔️ 以上就是 C# 基础语法的介绍,希望能够对大家有所帮助。望大家多多支持,你们的支持就是笔者创作最大的动力!文章来源地址https://www.toymoban.com/news/detail-446536.html

到了这里,关于【C#基础】C# 基础语法解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Go 语言入门指南:基础语法和常用特性解析

    代码解释: 变量声明和初始化: var a = \\\"initial\\\" :声明一个名为 a 的变量,初始值为字符串 “initial”。 var b, c int = 1, 2 :声明两个整数变量 b 和 c ,并分别初始化为 1 和 2。 var d = true :声明一个布尔变量 d ,初始值为 true 。 var e float64 :声明一个浮点数变量 e ,因为没有显

    2024年02月11日
    浏览(29)
  • Go语言入门指南:基础语法和常用特性解析(上)

    Go是一种静态类型的编译语言,常常被称作是21世纪的C语言。Go语言是一个开源项目,可以免费获取编译器、库、配套工具的源代码,也是高性能服务器和应用程序的热门选择。 Go语言可以运行在类UNIX系统——比如Linux、OpenBSD、Microsoft Windows等操作系统上。 因为Go语言的特性,

    2024年02月12日
    浏览(29)
  • Go 语言入门指南: 环境搭建、基础语法和常用特性解析 | 青训营

    Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。 Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且

    2024年02月14日
    浏览(26)
  • 【字节跳动青训营】后端笔记整理-1 | Go语言入门指南:基础语法和常用特性解析

    **本人是第六届字节跳动青训营(后端组)的成员。本文由博主本人整理自该营的日常学习实践,首发于稀土掘金:🔗Go语言入门指南:基础语法和常用特性解析 | 青训营 本文主要梳理自 第六届字节跳动青训营(后端组)-Go语言原理与实践第一节(王克纯老师主讲) 。同时

    2024年02月13日
    浏览(39)
  • Java语法和C#语法有哪些异同?

    Java和C#是两种流行的面向对象编程语言,它们有许多相似之处,因为它们都受到C++和面向对象编程的影响。但它们也有一些语法上的异同,让我们来看看它们的一些主要异同点: 相同点: 1、面向对象编程:Java和C#都是面向对象的编程语言,支持类、对象、继承、封装和多态

    2024年02月16日
    浏览(25)
  • C# 语法笔记

    ref:引用传递 out: 输出传参 假设在函数调用前变量a的值为5; 此函数的实现使用输出传参,在方法内第一次修改a=1,第二次修改a=2,第三次修改为a=3,那么a的值会在执行此函数后为3; unity中的射线检测的第三个参数就是通过输出值传递被击中 物体的信息 public static bool Raycast(Vecto

    2024年02月04日
    浏览(29)
  • C#基本语法

    定义:C#是一种面向对象的编程语言。 在任何c#程序中的第一条语句都是 using用于在程序中包含命名空间。一个程序可以包含多个using语句 class class用于声明一个类 C#的注释 注释是用于解释代码。编译器会忽略注释的条目。 例:多行注释以/*开始,通过*

    2024年01月20日
    浏览(19)
  • c#语法问题记录

    using 语句定义一个范围,在此范围的末尾将释放对象。 using 指令为命名空间创建别名,或导入在其他命名空间中定义的类型。 internal: 是类型和类型成员的访问修饰符。 sealed :应用于某个类时,sealed 修饰符可阻止其他类继承自该类。 partial :拆分一个类、一个结构

    2024年02月16日
    浏览(20)
  • C# 6.0 语法新特性

    静态using(static using)。引用静态类后,可以直接方法名 表达式方法 使用表达式方法,只有一条语句的方法可以使用lambda语法写。 表达式属性 自动属性初始化 只读自动属性 nameof操作符 字段、属性、方法和类型的name可以通过nameof访问。使用nameof,可以方便的重构name变化 Nu

    2024年02月07日
    浏览(23)
  • 揭秘:C#语法中“_ =” 是什么?

    在C#编程世界中,语法的精妙之处往往体现在那些看似微小却极具影响力的符号与结构之中。其中,“_ =” 这一组合突然出现还真不知道什么意思。本文将深入剖析“_ =” 的含义、工作原理及其在实际编程中的广泛应用,揭示其作为C#语法奇兵的重要角色。 下划线 _ 在C#中并

    2024年04月22日
    浏览(16)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包