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# 生态系统,以增强您的技能并释放无限的可能性。