教程:探索 C# 语言

本教程介绍 C# 。 编写第一个 C# 程序,并查看编译和运行代码的结果。 它包含以“Hello World”程序开头的一系列课程。 这些课程介绍了 C# 语言的基础知识。

在本教程中,你将:

  • 使用 C# 开发环境启动 GitHub Codespace。
  • 创建第一个 C# 应用。
  • 创建和使用变量来存储文本数据。
  • 对文本数据使用 .NET API。

先决条件

必须具有以下选项之一:

打开 Codespaces

若要使用教程环境启动 GitHub Codespace,请打开 教程 codespace 存储库的浏览器窗口。 选择绿色 “代码 ”按钮和 “代码空间 ”选项卡。然后选择该 + 符号以使用此环境创建新的 Codespace。

运行第一个程序

  1. 在代码空间加载时,在名为 hello-world.cs教程文件夹中创建新文件。

  2. 打开新文件。

  3. 键入或将以下代码复制到 hello-world.cs

    Console.WriteLine("Hello, World!");
    
  4. 在集成终端窗口中,将 教程 文件夹设为当前文件夹,并运行程序:

    cd tutorials
    dotnet hello-world.cs
    

运行了第一个 C# 程序。 这是一个简单的程序,用于打印消息“Hello World!”它使用 Console.WriteLine 该方法打印该消息。 Console 是表示控制台窗口的类型。 WriteLineConsole 类型中的一种方法,该方法将文本行打印到文本控制台。

让我们继续前进,探索更多。 本课程的其余部分将探讨如何使用类型 string ,该类型表示 C# 中的文本。 与类型 Console 一样,该 string 类型具有方法。 这些 string 方法适用于文本。

声明和使用变量

你的第一个程序在屏幕上打印 string “Hello World!” 。

小窍门

在探索 C#(或任何编程语言)的过程中,可能会在编写代码时犯错。 编译器会找到这些错误并将其报告给你。 当输出包含错误消息时,请仔细查看示例代码和文件中的代码 .cs 以查看要修复的内容。 该练习有助于学习 C# 代码的结构。 你还可以要求科皮洛特找出差异或发现错误。

你的第一个程序仅限于打印一条消息。 可以使用 变量编写更有用的程序。 变量是可用于运行具有不同值的相同代码的符号。 我们来试一试!

  1. 从以下代码开始:

    string aFriend = "Bill";
    Console.WriteLine(aFriend);
    

    第一行声明变量, aFriend并为其赋值“Bill”。 第二行打印名称。

  2. 可以将不同的值分配给声明的任何变量。 你可以将这个名称改成你一个朋友的名字。 在添加的代码后面添加这两行。 请确保保留变量及其初始赋值声明 aFriend

    重要

    请勿删除 aFriend的声明。

  3. 在上述代码的末尾添加以下代码:

    aFriend = "Maira";
    Console.WriteLine(aFriend);
    

    请注意,同一行代码根据变量中 aFriend 存储的值打印两条不同的消息。 你可能会注意到最后两条消息中缺少“Hello”一词。 现在我们来解决此问题。

  4. 修改打印消息的代码行如下:

    Console.WriteLine("Hello " + aFriend);
    
  5. 再次运行应用,方法是使用 dotnet hello-world.cs 以查看结果。

    你一直在使用+将字符串从变量常量字符串构建出来。 有更好的方法。 可以在{}字符之间放置一个变量,以指示 C# 将该文本替换为变量的值。 此过程称为 字符串内插

  6. 如果在字符串的左引号前添加一个 $ ,则可以在大括号之间的字符串中包含变量,例如 aFriend。 试一试:

    Console.WriteLine($"Hello {aFriend}");
    
  7. 再次运行应用,方法是使用 dotnet hello-world.cs 以查看结果。 消息应为“Hello Maira”,而不是“Hello {aFriend}”。

使用字符串

上次编辑是你第一次了解如何使用字符串。 让我们来了解一下。

你可以在大括号之间使用多个变量,而不仅限于单个变量。

  1. 尝试应用底部的以下代码:

    string firstFriend = "Maria";
    string secondFriend = "Sage";
    Console.WriteLine($"My friends are {firstFriend} and {secondFriend}");
    

    字符串不仅仅是字母集合。 可以使用 Length 查找字符串的长度。 Length 是字符串 的属性 ,它返回该字符串中的字符数。

  2. 在应用底部添加以下代码:

    Console.WriteLine($"The name {firstFriend} has {firstFriend.Length} letters.");
    Console.WriteLine($"The name {secondFriend} has {secondFriend.Length} letters.");
    

小窍门

现在是自己探索的好时机。 你已了解到 Console.WriteLine() 会将文本输出到屏幕。 你了解了如何声明变量并连接字符串。 尝试在代码中进行实验。 编辑器具有一个名为IntelliSense的功能,可以为您提供可执行操作的建议。 在.中的d之后键入一个firstFriend。 可以看到可用于的属性和方法的建议列表。

一直在使用方法Console.WriteLine 打印消息。 方法是执行某些动作的代码块。 它有一个名称,因此你可以访问它。

从字符串中删除空格

假设您的字符串中有您不想显示的前导或尾随空格。 你想要 去除 字符串两端的空格。 该Trim方法与相关方法TrimStartTrimEnd一起负责完成该任务。 可以使用这些方法删除前导空格和尾随空格。

  1. 请尝试以下代码:

    string greeting = "      Hello World!       ";
    Console.WriteLine($"[{greeting}]");
    
    string trimmedGreeting = greeting.TrimStart();
    Console.WriteLine($"[{trimmedGreeting}]");
    
    trimmedGreeting = greeting.TrimEnd();
    Console.WriteLine($"[{trimmedGreeting}]");
    
    trimmedGreeting = greeting.Trim();
    Console.WriteLine($"[{trimmedGreeting}]");
    

方括号[]有助于你直观地理解TrimTrimStartTrimEnd方法的作用。 括号显示空格开始和结束的位置。

此示例强化了使用字符串的几个重要概念。 处理字符串的方法返回新的字符串对象,而不是在原地进行修改。 可以看到,每次调用任何 Trim 方法都会返回一个新字符串,但不会更改原始消息。

在字符串中搜索和替换文本

可以使用其他方法处理字符串。 例如,可以在编辑器或字处理器中使用搜索和替换命令。 该方法 Replace 在字符串中执行类似操作。 它搜索子字符串并将其替换为不同的文本。 该方法 Replace 采用两 个参数。 这些参数是括号之间的字符串。 第一个字符串是要搜索的文本。 第二个字符串是用于替换的文本。 试试吧。

  1. 添加此代码。 当你在 .Re 变量后面开始键入 sayHello 时,键入它以查看提示:

    string sayHello = "Hello World!";
    Console.WriteLine(sayHello);
    sayHello = sayHello.Replace("Hello", "Greetings");
    Console.WriteLine(sayHello);
    

    另外两个有用的方法使字符串全部大写或全部小写。 请尝试以下代码。

  2. 在你开始键入 时,键入它以查看To IntelliSense 如何提供提示:

    Console.WriteLine(sayHello.ToUpper());
    Console.WriteLine(sayHello.ToLower());
    

    搜索和替换作的另一部分是查找字符串中的文本。 可以使用该方法 Contains 进行搜索。 它会告诉你一个字符串是否包含某个子字符串。

  3. 请尝试以下代码来浏览 Contains

    string songLyrics = "You say goodbye, and I say hello";
    Console.WriteLine(songLyrics.Contains("goodbye"));
    Console.WriteLine(songLyrics.Contains("greetings"));
    

    该方法 Contains 返回一个 布尔 值,该值指示是否找到要搜索的字符串。 布尔值存储true两种值。 当显示为文本输出时,它们将分别大写: TrueFalse。 后续的课程会讲解更多关于布尔值的内容。

挑战

两种类似的方法,StartsWithEndsWith,也用于在字符串中搜索子字符串。 这些方法在字符串的开头或末尾查找子字符串。 尝试修改上一个示例以使用 StartsWithEndsWith 而不是 Contains。 搜索字符串开头是否有“You”或“goodbye”。 在字符串末尾搜索“hello”或“goodbye”。

注释

在测试字符串末尾的文本时,请注意标点符号。 如果字符串以句点结尾,必须检查是否有以句点结尾的字符串。

你应该对于以"You"开始并以"hello"结尾的情况使用true,而对于以“再见”开始或结尾的情况使用false

你是否想出了类似于以下代码的内容(展开以查看答案):

string songLyrics = "You say goodbye, and I say hello";
Console.WriteLine(songLyrics.StartsWith("You"));
Console.WriteLine(songLyrics.StartsWith("goodbye"));

Console.WriteLine(songLyrics.EndsWith("hello"));
Console.WriteLine(songLyrics.EndsWith("goodbye"));

若要阅读更多关于string 类型的信息,请参阅:

清理资源

GitHub 会在 30 天不活动后自动删除 Codespace。 如果打算探索本系列中的更多教程,您可以保留 Codespace 配置。 如果已准备好访问 .NET 站点 来下载 .NET SDK,则可以删除 Codespace。 若要删除 Codespace,请打开浏览器窗口并导航到 Codespaces。 应该会在窗口中看到代码空间的列表。 在学习教程代码空间的条目中选择三个点(...),然后选择“delete”。

后续步骤