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):

相关推荐
秃头佛爷44 分钟前
Python学习大纲总结及注意事项
开发语言·python·学习
阿伟*rui1 小时前
配置管理,雪崩问题分析,sentinel的使用
java·spring boot·sentinel
待磨的钝刨1 小时前
【格式化查看JSON文件】coco的json文件内容都在一行如何按照json格式查看
开发语言·javascript·json
△曉風殘月〆2 小时前
WPF MVVM入门系列教程(二、依赖属性)
c#·wpf·mvvm
XiaoLeisj3 小时前
【JavaEE初阶 — 多线程】单例模式 & 指令重排序问题
java·开发语言·java-ee
paopaokaka_luck3 小时前
【360】基于springboot的志愿服务管理系统
java·spring boot·后端·spring·毕业设计
dayouziei3 小时前
java的类加载机制的学习
java·学习
励志成为嵌入式工程师4 小时前
c语言简单编程练习9
c语言·开发语言·算法·vim
逐·風4 小时前
unity关于自定义渲染、内存管理、性能调优、复杂物理模拟、并行计算以及插件开发
前端·unity·c#
捕鲸叉4 小时前
创建线程时传递参数给线程
开发语言·c++·算法