C# 简介

C#(发音为 "C sharp")是 Microsoft 开发的一种现代通用编程语言。它广泛用于构建各种类型的应用程序,包括桌面、Web、移动和游戏应用程序。在本指南中,我们将介绍 C# 编程的基础知识,包括数据类型、变量、控制流、函数、类、命名空间 等。

此外,C# 提供了一组丰富的功能和工具,使其成为适用于各个领域的多功能且强大的编程语言,包括桌面应用程序、Web 开发、移动应用程序和使用 Unity 等技术的游戏开发。 随着 C# 之旅的进展,您可以探索更高级的主题,例如继承、多态性、接口、泛型、LINQ(语言集成查询)以及使用任务和 async/await 的异步编程。 了解这些概念将增强您设计健壮且可扩展的应用程序的能力。

让我们从基础开始。

设置开发环境

要开始使用 C# 进行编码,您需要设置开发环境。以下是开始步骤:

  • 安装 Visual Studio:从 Microsoft 官方网站下载并安装 Visual Studio。Visual Studio 是一个功能强大的集成开发环境 (IDE),提供 C# 开发所需的所有工具。
  • 创建新项目:启动 Visual Studio 并创建一个新项目。根据您要构建的应用程序类型选择适当的项目模板。
  • 编写代码:项目设置完毕后,您可以开始在 Visual Studio 提供的代码编辑器中编写 C# 代码。

现在您已经设置了开发环境,让我们深入了解 C# 编程的基础知识。

你好世界计划

传统的“你好,世界!” 程序通常是您用任何编程语言编写的第一个程序。下面是用 C# 编写它的方法:

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine("Hello, World!");
    }
}

在此代码示例中,我们首先包含 'System' 命名空间,其中包含一个名为 'Console' 的类,用于处理输入和输出。然后,我们定义一个名为 'Program' 的类。在这个类中,我们有一个 'Main' 方法,它是 C# 程序的入口点。最后,我们使用 'Console.WriteLine' 方法打印“Hello, World!” 消息到控制台。

变量和数据类型

在 C# 中,您需要先声明 variables 才能使用它们。变量保存不同数据类型的值。以下是 C# 中一些常用的数据类型:

  • 'int':代表整数(例如,10、-5、0)。
  • 'double':表示带小数位的浮点数(例如,3.14、-0.5)。
  • 'bool':表示布尔值(true 或 false)。
  • 'string':表示字符序列(例如"Hello"、"C#")。

下面是一个演示变量声明和基本操作的示例:

int age = 25;
double pi = 3.14;
bool isStudent = true;
string name = "John";

int sum = age + 5;
double circleArea = pi * 2 * 2;
bool isAdult = age >= 18;

Console.WriteLine("Name: " + name);
Console.WriteLine("Age: " + age);
Console.WriteLine("Sum: " + sum);
Console.WriteLine("Circle Area: " + circleArea);
Console.WriteLine("Is Adult? " + isAdult);

在此示例中,我们声明变量 'age''pi''isStudent''name' 及其各自的值数据类型。我们执行一些基本运算,例如加法、乘法和比较。'Console.WriteLine' 方法用于在控制台上显示值。

数组和集合

数组和集合是 C# 中的基本数据结构,可让您有效地存储和操作多个值。它们在各种编程场景中发挥着至关重要的作用,并广泛应用于 C# 开发中。

数组

C# 中的数组是相同类型元素的固定大小集合。这是一个例子:

int[] numbers = new int[5] { 1, 2, 3, 4, 5 };

在此示例中,我们声明一个名为 'numbers' 的整数数组,大小为 '5'。我们使用大括号 '{}' 用指定值初始化数组。您可以使用从 0 开始的索引表示法访问数组的各个元素。例如,'numbers[0]' 为您提供第一个元素。

收藏

C# 中的集合比数组提供更大的灵活性,因为它们可以动态增长或收缩。C# 提供了多种集合类型,例如 'List<T>'、'Dictionary<TKey, TValue>' 和 'HashSet<T>'

您可以使用 'System.Collections.Generic' 命名空间中的类之一创建通用集合。当集合中的每个项目都具有相同的数据类型时,通用集合非常有用。通用集合通过仅允许添加所需的数据类型来强制执行强类型。

using System.Collections.Generic;

以下是使用 'List<T>' 集合的示例:

List<string> names = new List<string>();
names.Add("Alice");
names.Add("Bob");
names.Add("Charlie");

在此示例中,我们使用初始化器类 'List<T>' 创建名为 'names' 的字符串列表。我们使用 'Add()' 方法将元素添加到列表中。

'List<T>' 提供了许多有用的方法和属性来处理集合,例如 'Count' 用于获取元素数量,'Remove()' 用于删除一个元素,并 'Contains()' 检查元素是否存在。

数组和集合的迭代

您可以使用循环(例如 'for' 或 'foreach')迭代数组和集合,以访问和操作它们的元素。下面是迭代数组和列表的示例:

int[] numbers = new int[] { 1, 2, 3, 4, 5 };

foreach (int number in numbers)
{
    Console.WriteLine(number);
}

List<string> names = new List<string>() { "Alice", "Bob", "Charlie" };

foreach (string name in names)
{
    Console.WriteLine(name);
}

在此示例中,我们使用 'foreach' 循环来迭代数组 'numbers' 和列表 'names' 中的每个元素,并将它们打印到控制台。

控制流

控制流允许您根据条件做出决策并执行不同的代码块。C# 提供了多种控制流结构,包括 'if' 语句、'switch' 语句和循环。

'If'

'if' 语句允许您仅在指定条件为真时执行代码块。这是一个例子:

int number = 10;

if (number > 0)
{
    Console.WriteLine("The number is positive.");
}
else if (number < 0)
{
    Console.WriteLine("The number is negative.");
}
else
{
    Console.WriteLine("The number is zero.");
}

在此示例中,我们使用 'if'、'else if' 和 'else' 子句检查 'number' 变量的值。根据情况,将打印相应的消息。

'Switch'

'switch' 语句允许您根据表达式的值选择要执行的多个代码块之一。这是一个例子:

int dayOfWeek = 2;
string dayName;

switch (dayOfWeek)
{
    case 1:
        dayName = "Monday";
        break;
    case 2:
        dayName = "Tuesday";
        break;
    case 3:
        dayName = "Wednesday";
        break;
    // ...
    default:
        dayName = "Invalid day";
        break;
}

Console.WriteLine("Today is " + dayName + ".");

在此示例中,我们使用语句 'switch' 根据 'dayOfWeek' 的值分配日期的名称。'case' 语句指定可能的值,如果没有任何情况匹配,则执行 'default' 情况。

循环语句

循环允许您重复执行代码块,直到满足特定条件。C# 提供 'for'、'while' 和 'do-while' 循环。

'For'

当您提前知道迭代次数时,将使用 'for' 循环。这是一个例子:

for (int i = 0; i < 5; i++)
{
    Console.WriteLine("Iteration: " + i);
}

在此示例中,循环运行五次,每次都打印迭代次数。

'While'

当您事先不知道迭代次数但有一个条件需要检查时,将使用 'while' 循环。这是一个例子:

int count = 0;

while (count < 5)
{
    Console.WriteLine("Count: " + count);
    count++;
}

在此示例中,循环运行直到 'count' 变量达到 5。

'Do-While'

'do-while' 循环与 while 循环类似,但在最后检查条件,因此循环至少执行一次。这是一个例子:

int num = 1;

do
{
    Console.WriteLine("Number: " + num);
    num++;
} while (num <= 5);

在此示例中,循环运行直到 'num' 变量不再小于或等于 5。

功能

函数 允许您封装可重用的代码块。C# 支持对不返回值的方法使用 'void' 关键字定义函数,对返回值的方法使用其他数据类型。这是一个例子:

int Add(int a, int b)
{
    return a + b;
}

void Greet(string name)
{
    Console.WriteLine("Hello, " + name + "!");
}

int result = Add(5, 3);
Greet("Alice");

在此示例中,我们定义了两个函数:'Add''Greet''Add' 函数采用两个整数参数并返回它们的总和。'Greet' 函数采用字符串参数并打印问候消息。然后我们使用适当的参数调用这些函数。

类和对象

C# 是一种面向对象的编程语言,这意味着它支持 classes 和对象的创建。类定义了创建对象的蓝图,对象是这些类的实例。这是一个例子:

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }

    public void SayHello()
    {
        Console.WriteLine("Hello, my name is " + Name + " and I'm " + Age + " years old.");
    }
}

Person person = new Person();
person.Name = "John";
person.Age = 30;
person.SayHello();

在此示例中,我们定义一个 'Person' 类,其中包含 'Name''Age' 属性以及 'SayHello' 方法。然后,我们使用 'new' 关键字创建 'Person' 类的实例并设置其属性。最后,我们在 'person' 对象上调用 'SayHello' 方法。

面向对象编程 (OOP) 概念

C# 是一种面向对象的编程语言,它提供了各种功能来支持 OOP 概念,例如继承、封装和多态性。

遗产

继承允许您基于现有类创建新类,继承它们的属性和行为。这是一个例子:

class Shape
{
    public virtual void Draw()
    {
        Console.WriteLine("Drawing a shape.");
    }
}

class Circle : Shape
{
    public override void Draw()
    {
        Console.WriteLine("Drawing a circle.");
    }
}

在此示例中,'Circle' 类使用 ':' 符号从 'Shape' 类继承。'Circle' 类重写基类中的 'Draw' 方法以提供自己的实现。

封装

封装是将数据和方法捆绑在一个类中并控制它们的访问的做法。您可以使用访问修饰符('public'、'private'、'protected' 等)来指定成员的可见性。这是一个例子:

class Person
{
    private string name;

    public string GetName()
    {
        return name;
    }

    public void SetName(string newName)
    {
        name = newName;
    }
}

在此示例中, 'name' 字段封装在 'Person' 类中,只能通过 'GetName'* 访问h81* 方法。

多态性

多态性允许将不同类的对象视为公共基类的对象。这使得编写的代码能够以统一的方式处理不同类型的对象。这是一个例子:

class Animal
{
    public virtual void MakeSound()
    {
        Console.WriteLine("Animal makes a sound.");
    }
}

class Dog : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("Dog barks.");
    }
}

class Cat : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("Cat meows.");
    }
}

在此示例中, 'Animal' 类具有虚拟 'MakeSound' 方法,该方法被 'Dog''Cat' 覆盖 课程。多态性允许我们将 'Dog''Cat' 的实例视为 'Animal' 的实例,并调用 'MakeSound'对他们的方法。

异常处理

异常处理 允许您优雅地处理运行时错误。在 C# 中,您可以使用 'try-catch' 块来捕获和处理异常。这是一个例子:

try
{
    int result = 10 / 0;
    Console.WriteLine("Result: " + result);
}
catch (DivideByZeroException ex)
{
    Console.WriteLine("Divide by zero error: " + ex.Message);
}
finally
{
    Console.WriteLine("Cleanup code goes here.");
}

在此示例中,我们尝试执行除以零,这会抛出 'DivideByZeroException'。执行'try'块内的代码,如果发生异常,则由'catch'块捕获。

无论异常是否发生,都会执行 'finally' 块,它通常用于清理操作。

异常处理有助于防止程序崩溃并允许受控的错误处理和恢复。

结论

本综合指南详细介绍了 C# 编程,涵盖了该语言的基础知识和基本概念。 从设置开发环境开始,编写“Hello, World!” 在程序中,我们探索了数据类型、变量、控制流结构(如 if 语句和循环)以及函数的创建。 我们深入研究了更高级的主题,例如类、对象、继承、封装、多态性以及异常处理。 此外,我们还讨论了使用数组和集合来管理多个值。 有了这些知识,您现在已经在 C# 编程方面打下了坚实的基础,使您能够开发各种应用程序,从控制台应用程序到 Web 和移动应用程序。 请记住继续练习和探索广阔的 C# 生态系统,以增强您的技能并释放无限的可能性。