Skip to main content

基础语法

C# 是一种面向对象的编程语言。在面向对象的程序设计方法中,程序由各种相互交互的对象组成。

相同种类的对象通常具有相同的类型,或者说,是在相同的 class 中。

大白话解释

面向对象编程,其实就是面向现实世界的一切物体进行模拟

例如 “人” 都拥有人的属性:鼻子,眼睛,嘴巴等。

人有什么行为呢?闻东西,看东西,吃东西。

映射到面向对象编程中就是:属性(人的属性)、方法(闻、看、吃东西)。

也就是我们学习C#,其实就是在学习如果创造人(属性、行为(行为))

后期我们也是一直围绕着属性、方法系统化学习C#。

代码范例

using System; // 引入System命名空间,这就像是一个工具箱,里面有很多基础工具,比如Console用来在屏幕上显示文字

namespace HumanExample // 创建一个叫HumanExample的“文件夹”(命名空间),用来放我们关于人的代码,方便管理
{
/// <summary>
/// 定义一个公开的类,名字叫 Person。
/// 类就像是设计图纸,描述了一个“人”应该有哪些特征(属性)和能做什么(方法)。
/// </summary>
public class Person
{
// ========== 以下是人的属性(特征/状态) ==========
// 这些就像填表格时的姓名、年龄等栏目

/// <summary>
/// 人的姓名
/// </summary>
public string Name; // 声明一个字符串类型的公共字段(属性)Name,用来存储人的名字。public表示外部可以直接访问它。

/// <summary>
/// 人的年龄
/// </summary>
public int Age; // 声明一个整数类型的公共字段Age,用来存储人的年龄

// ========== 以下是人的方法(动作/行为) ==========
// 这些就像人能做的各种事情

/// <summary>
/// 自我介绍的方法
/// </summary>
public void IntroduceYourself()
{
// 使用Console.WriteLine在控制台输出一行文字
// {Name}和{Age}会被替换成当前对象实际存储的名字和年龄
Console.WriteLine($"大家好,我叫{Name},我今年{Age}岁了。");
}

/// <summary>
/// 走路的方法
/// </summary>
/// <param name="speed">走路的速度</param>
public void Walk(string speed)
{
// 根据传入的speed参数,输出不同的走路信息
Console.WriteLine($"{Name}正在以{speed}的速度走路。");
}

/// <summary>
/// 计算并返回这个人明年年龄的方法
/// </summary>
/// <returns>明年的年龄</returns>
public int GetAgeNextYear()
{
// 计算明年年龄:当前年龄(Age)加1
int ageNextYear = Age + 1;
return ageNextYear; // 使用return关键字将计算的结果返回给调用者
}
}

/// <summary>
/// 包含程序入口Main方法的类,程序从这里开始执行
/// </summary>
internal class Program
{
/// <summary>
/// 程序的主入口方法,代码从这里开始运行
/// </summary>
static void Main(string[] args)
{
// 1. 创建(实例化)一个Person对象,相当于按照图纸造出一个具体的人。
// 使用 new 关键字后跟类名() 来创建对象。
// myFriend 就是一个Person类型的变量,它指向我们新创建的对象。
Person myFriend = new Person();

// 2. 设置对象的属性,给这个人赋予具体的特征。
myFriend.Name = "小王"; // 将myFriend的Name属性设置为"小王"
myFriend.Age = 25; // 将myFriend的Age属性设置为25

// 3. 调用对象的方法,让这个人执行动作。
myFriend.IntroduceYourself(); // 调用IntroduceYourself方法,让myFriend做自我介绍

// 4. 调用Walk方法,并传递一个参数"很快"
myFriend.Walk("很快");

// 5. 调用GetAgeNextYear方法,它会返回一个值(整数),我们可以用一个变量来接收这个返回值。
int nextYearAge = myFriend.GetAgeNextYear();
// 输出计算得到的明年年龄
Console.WriteLine($"到明年,{myFriend.Name}就{nextYearAge}岁了。");

// 等待用户按下任意键再关闭控制台窗口,方便查看运行结果
Console.WriteLine("按任意键退出...");
Console.ReadKey();
}
}
}

标识符(自定义数据的名字)

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

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

C# 关键字(内置数据的名字)

关键字是 C# 编译器预定义的保留字。

这些关键字不能用作标识符(不能用这些标识符作为你的数据命名),但是,如果您想使用这些关键字作为标识符,可以在关键字前面加上 @ 字符作为前缀。

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

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

保留关键字
abstractasbaseboolbreakbytecase
catchcharcheckedclassconstcontinuedecimal
defaultdelegatedodoubleelseenumevent
explicitexternfalsefinallyfixedfloatfor
foreachgotoifimplicitinin (generic modifier)int
interfaceinternalislocklongnamespacenew
nullobjectoperatoroutout (generic modifier)overrideparams
privateprotectedpublicreadonlyrefreturnsbyte
sealedshortsizeofstackallocstaticstringstruct
switchthisthrowtruetrytypeofuint
ulonguncheckedunsafeushortusingvirtualvoid
volatilewhile
上下文关键字
addaliasascendingdescendingdynamicfromget
globalgroupintojoinletorderbypartial (type)
partial (method)removeselectset