C#基础知识 - 基本语法篇

C#基础知识-基本语法篇

更多C#基础知识详解请查看:C#基础知识 - 从入门到放弃

第2节 C#基本语法

2.1 C#程序结构

"Hello, World"程序历来都用于介绍编程语言。 下面展示了此程序的 C# 代码:

csharp 复制代码
using System;
using System.Collections.Generic;
//using ...
//以上引用命名空间

namespace _Csharp程序结构
{
    class Program       //Program类
    {
        static void Main(string[] args) //static 静态 void 无返回值 Main 函数 - 程序起点
        {
            Console.WriteLine("Hello Word!");
            Console.ReadKey();
        }
    }
}

//以上命名空间或者项目名称

输出:

csharp 复制代码
Hello, World

"Hello, World"程序始于引用 System 命名空间的 using 指令。 命名空间提供了一种用于组织 C# 程序和库的分层方法。命名空间包含类型和其他命名空间。例如,System 命名空间包含许多类型(如程序中引用的 Console 类)和其他许多命名空间(如 IOCollections)。 借助引用给定命名空间的 using 指令,可以非限定的方式使用作为相应命名空间成员的类型。 由于使用 using 指令,因此程序可以使用 Console.WriteLine 作为 System.Console.WriteLine 的简写。

"Hello, World"程序声明的 Hello 类只有一个成员,即 Main 方法。 Main 方法使用 static 修饰符进行声明。 实例方法可以使用关键字 this 引用特定的封闭对象实例,而静态方法则可以在不引用特定对象的情况下运行。 Main 静态方法是 C# 程序的入口点

程序的输出是由 System 命名空间中 Console 类的 WriteLine 方法生成。 此类由标准类库提供。默认情况下,编译器会自动引用标准类库。

2.2 C# 结构解析

有如下一个C# 程序代码:

csharp 复制代码
using System;
using System.Collections.Generic;
using ...
//以上引用命名空间

namespace _Csharp程序结构
{
    class Program       //Program类
    {
        static void Main(string[] args) 
        //static 静态 void 无返回值 Main 函数 - 程序起点
        {
            Console.WriteLine("Hello Word!");
            Console.ReadKey();
        }
    }
}

//以上命名空间或者项目名称

在次程序中:
1、 using System;
using 关键字用来在程序中引入 System 命名空间,一个程序中可以有多个 using 语句。
2、namespace _Csharp程序结构
namespace 关键字用来声明一个命名空间,"Csharp程序结构"则是命名空间的名字。命名空间是类的集合 ,上面代码中名为"Csharp程序结构"的命名空间中包含了一个名为"Program"的
3、class Program
class 关键字用来定义一个类,"Program"则是类的名,类中 通常用来存放 程序中要使用的数据和函数 (也叫方法 )。
4、static void Main(string[ ] args)

此行代码中,Main 为定义的函数名称,Main 函数是整个 C# 程序的入口 ,其中包含了程序运行时需要执行的操作。static 和 void 都是用来修饰 Main 函数的关键字,具体含义后面我们会详细介绍。
5、 //static 静态 void 无返回值 Main 函数 - 程序起点

这是程序的注释,当程序运行时被//注释的内容将被编译器忽略,不会执行。注释主要用来对所写的代码进行说明。多行可使用/* */

csharp 复制代码
/*
static 静态 
void 无返回值 
Main 函数 - 程序起点
*/

6、Console.WriteLine("Hello World!");

此行代码用来在命令行窗口中输出"Hello World!"。WriteLineSystem 命名空间中定义的 Console 类里面的方法,用来输出一些消息。
7、Console.ReadKey( );

此行代码是针对 VS.NET 用户的,它会使程序进入等待状态,敲击键盘上的任意一个按键即可让程序继续运行。需要这行代码是因为命令行窗口会在程序运行结束后自动关闭,导致要输出的内容一闪而过,加入此行代码则可以避免这种情况。

另外,还有以下几点需要注意:

1、C# 区分大小写;

2、所有语句和表达式都必须以英文的分号;结尾;

3、程序从 Main 函数开始执行;

4、与 Java 不同,程序文件名可以与类名不同;

5、代码中出现的{}都是成对出现的,用来标记代码块,{ }中包裹的代码可以看作是一个整体。

2.3 命名空间及标识符、关键字

2.3.1 别名的使用

使用别名(alias)来为类型或命名空间定义一个新的名称,以简化代码并增强可读性。使用别名可以提供更简洁、易懂的类型或命名空间名称,或者使代码与外部库或组件更加兼容。

别名的使用可以通过以下两种方式来实现:

1、使用using语句:

使用using语句可以在给定的作用域内为类型或命名空间指定一个别名。这通常用于简化对长命名空间的引用。

csharp 复制代码
using System;
using Co = System.Console;
//using ...
//以上引用命名空间

namespace _Csharp程序结构
{
    class Program       //Program类
    {
        static void Main(string[] args) //static 静态 void 无返回值 Main 函数 - 程序起点
        {
            Console.WriteLine("1、这是使用Console输出");
            Co.WriteLine("2、这是使用别名Co输出");
            Co.ReadKey();
        }
    }
}
//以上命名空间或者项目名称

输出结果:

csharp 复制代码
1、这是使用Console输出
2、这是使用别名Co输出

2、使用typedef命令:

在一些特殊情况下,可以使用typedef命令来创建类型别名,这种方式只适用于在BCL(基础类库)中定义的类型。

csharp 复制代码
typedef MyAlias = System.Collections.Generic.List<string>;

// 使用别名创建对象
MyAlias myList = new MyAlias();

// 使用别名调用方法
myList.Add("Hello");

需要注意:

① 别名仅在定义它们的范围内有效,如果使用别名的代码超出了别名的作用域,就需要重新引用完整的类型或命名空间。

② 使用别名可以提高代码的可读性和可维护性,特别是在涉及到长、复杂的类型或命名空间时。但是,在使用别名时应保持适度,确保别名具有明确、清晰的意义,不会与其他代码产生混淆。

③ 不建议定义系统自带的方法、函数等别名。

2.3.2 标识符

标识符是用来为类、变量、函数或任何其他自定义内容命名。C# 中标识符的定义规则如下所示:

1、标识符必须以英文字母 开头,后面可以跟英文字母、数字0-9或下划线_

2、标识符中的第一个字符不能是数字

3、标识符中不能包含空格或特殊符号,例如? - + ! @ # % ^ & * ( ) [ ] { } . ; : " ' / \,但是可以使用下划线_

4、C#区分大小写;

5、标识符不能是 C# 关键字。

2.3.3 C#关键字

C# 中的关键字是编译器预先定义好的一些单词,也可以称为保留字或者保留标识符,这些关键字对编译器有特殊的意义,不能用作标识符。但是,如果非要使用的话只需要在关键字前面加上@前缀即可:如@if就是一个有效的标识符 ,而if则是一个关键字

下图列出了 C# 中的保留关键字(Reserved Keywords)和上下文关键字(Contextual Keywords):

相关推荐
吾日三省吾码31 分钟前
JVM 性能调优
java
stm 学习ing36 分钟前
FPGA 第十讲 避免latch的产生
c语言·开发语言·单片机·嵌入式硬件·fpga开发·fpga
湫ccc2 小时前
《Python基础》之字符串格式化输出
开发语言·python
弗拉唐2 小时前
springBoot,mp,ssm整合案例
java·spring boot·mybatis
oi772 小时前
使用itextpdf进行pdf模版填充中文文本时部分字不显示问题
java·服务器
mqiqe2 小时前
Python MySQL通过Binlog 获取变更记录 恢复数据
开发语言·python·mysql
AttackingLin2 小时前
2024强网杯--babyheap house of apple2解法
linux·开发语言·python
少说多做3432 小时前
Android 不同情况下使用 runOnUiThread
android·java