Here is the tutorial:
“`markdown
C# 编程基础语法教程
C# (C-Sharp) 是一种由 Microsoft 开发的现代、面向对象的编程语言。它广泛应用于开发 Windows 桌面应用程序、Web 应用程序 (ASP.NET)、游戏 (Unity)、移动应用程序 (Xamarin) 以及各种企业级解决方案。本教程将带你了解 C# 的核心基础语法。
1. 准备开发环境
在开始之前,你需要一个 C# 开发环境。最常用的是 Visual Studio 或 Visual Studio Code。
* Visual Studio: 功能完备的 IDE,适合大型项目。
* Visual Studio Code: 轻量级编辑器,通过安装 C# 扩展可用于 C# 开发。
* .NET SDK: 必须安装,无论你使用哪个编辑器,它都提供了编译和运行 C# 程序的工具。
安装完成后,你可以创建一个新的控制台应用程序来练习本教程中的代码。
2. 第一个 C# 程序:Hello World!
每个编程语言教程的起点都是 “Hello World!”。
“`csharp
using System;
namespace HelloWorld
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(“Hello, World!”);
// Console.ReadKey(); // 在某些旧版本的控制台应用中,可能需要这一行来暂停程序,等待用户输入
}
}
}
“`
代码解释:
* using System;: 导入 System 命名空间,其中包含 Console 类,用于输入输出操作。
* namespace HelloWorld: 命名空间,用于组织代码,避免命名冲突。
* class Program: 类定义,C# 中的所有代码都必须在类中。
* static void Main(string[] args): 这是程序的入口点。
* static: 表示该方法属于类本身,而不是类的某个实例。
* void: 表示该方法不返回任何值。
* Main: 方法名,C# 程序从 Main 方法开始执行。
* string[] args: 程序的命令行参数。
* Console.WriteLine("Hello, World!");: 调用 Console 类的 WriteLine 方法,将字符串输出到控制台并换行。
3. 变量与数据类型
变量是存储数据的地方。在 C# 中,声明变量时需要指定其数据类型。
常用内置数据类型:
- 整型 (Integers):
byte: 0 到 255 (无符号 8 位)short: -32,768 到 32,767 (有符号 16 位)int: -2,147,483,648 到 2,147,483,647 (有符号 32 位) – 最常用long: 范围更大的有符号 64 位整型
- 浮点型 (Floating-point Numbers):
float: 单精度浮点数 (32 位) – 声明时数字后加f或Fdouble: 双精度浮点数 (64 位) – 最常用decimal: 适用于高精度财务计算 (128 位) – 声明时数字后加m或M
- 布尔型 (Booleans):
bool: 只能是true或false。
- 字符型 (Characters):
char: 单个 Unicode 字符,用单引号' '包裹。
- 字符串型 (Strings):
string: 一系列字符,用双引号""包裹。string是System.String类的别名。
变量声明与初始化:
“`csharp
int age = 30; // 声明一个整型变量 age 并初始化为 30
double salary = 55000.75; // 声明一个双精度浮点型变量 salary
char initial = ‘J’; // 声明一个字符型变量 initial
bool isActive = true; // 声明一个布尔型变量 isActive
string name = “Alice”; // 声明一个字符串变量 name
Console.WriteLine(“Name: ” + name);
Console.WriteLine(“Age: ” + age);
Console.WriteLine(“Salary: ” + salary);
Console.WriteLine(“Initial: ” + initial);
Console.WriteLine(“Active: ” + isActive);
// 隐式类型变量 (var) – 编译器根据初始化值推断类型
var count = 100; // count 会被推断为 int
var message = “Hello”; // message 会被推断为 string
“`
4. 常量
常量是程序执行期间值不能改变的变量。使用 const 关键字声明。
“`csharp
const double PI = 3.14159;
const string GREETING = “Welcome to C#!”;
// PI = 3.14; // 这会导致编译错误,因为常量不能被修改
Console.WriteLine(“PI value: ” + PI);
Console.WriteLine(GREETING);
“`
5. 运算符
运算符用于对变量和值执行操作。
算术运算符:
+ (加), - (减), * (乘), / (除), % (取模)
csharp
int a = 10, b = 3;
Console.WriteLine("a + b = " + (a + b)); // 13
Console.WriteLine("a - b = " + (a - b)); // 7
Console.WriteLine("a * b = " + (a * b)); // 30
Console.WriteLine("a / b = " + (a / b)); // 3 (整数除法)
Console.WriteLine("a % b = " + (a % b)); // 1
比较运算符:
== (等于), != (不等于), > (大于), < (小于), >= (大于等于), <= (小于等于)
csharp
int x = 5, y = 8;
Console.WriteLine(x == y); // false
Console.WriteLine(x != y); // true
Console.WriteLine(x < y); // true
逻辑运算符:
&& (逻辑与), || (逻辑或), ! (逻辑非)
csharp
bool isSunny = true;
bool isWarm = false;
Console.WriteLine(isSunny && isWarm); // false
Console.WriteLine(isSunny || isWarm); // true
Console.WriteLine(!isSunny); // false
赋值运算符:
= (赋值), += (加等于), -= (减等于), *= (乘等于), /= (除等于), %= (模等于)
csharp
int num = 10;
num += 5; // 等同于 num = num + 5; num 现在是 15
Console.WriteLine(num);
增量/减量运算符:
++ (自增), -- (自减)
“`csharp
int counter = 0;
counter++; // counter 变为 1
Console.WriteLine(counter); // 1
++counter; // counter 变为 2
Console.WriteLine(counter); // 2
int value = 5;
int result1 = value++; // result1 = 5, value = 6 (先赋值,后自增)
Console.WriteLine(“Result1: ” + result1 + “, Value: ” + value);
value = 5;
int result2 = ++value; // result2 = 6, value = 6 (先自增,后赋值)
Console.WriteLine(“Result2: ” + result2 + “, Value: ” + value);
“`
6. 控制流语句
控制流语句决定了程序执行的顺序。
6.1. 条件语句 (if, else if, else)
“`csharp
int score = 85;
if (score >= 90)
{
Console.WriteLine(“Excellent!”);
}
else if (score >= 70)
{
Console.WriteLine(“Good!”);
}
else
{
Console.WriteLine(“Needs improvement.”);
}
“`
6.2. switch 语句
当有多个可能的值需要判断时,switch 语句是一个更简洁的选择。
“`csharp
int day = 3;
string dayName;
switch (day)
{
case 1:
dayName = “Monday”;
break;
case 2:
dayName = “Tuesday”;
break;
case 3:
dayName = “Wednesday”;
break;
case 4:
dayName = “Thursday”;
break;
case 5:
dayName = “Friday”;
break;
default:
dayName = “Weekend or invalid day”;
break;
}
Console.WriteLine(“Day is: ” + dayName);
// 多个 case 匹配相同结果 (C# 7.0 及更高版本)
char grade = ‘B’;
switch (grade)
{
case ‘A’:
case ‘B’:
case ‘C’:
Console.WriteLine(“Pass”);
break;
case ‘D’:
case ‘F’:
Console.WriteLine(“Fail”);
break;
default:
Console.WriteLine(“Invalid Grade”);
break;
}
“`
6.3. 循环语句
for 循环
当你知道循环执行的次数时使用。
“`csharp
for (int i = 0; i < 5; i++)
{
Console.WriteLine(“For loop iteration: ” + i);
}
// 倒序循环
for (int i = 5; i > 0; i–)
{
Console.WriteLine(“Countdown: ” + i);
}
“`
while 循环
当循环条件为 true 时,重复执行代码块。
csharp
int count = 0;
while (count < 3)
{
Console.WriteLine("While loop iteration: " + count);
count++;
}
do-while 循环
至少执行一次循环体,然后才检查条件。
csharp
int i = 0;
do
{
Console.WriteLine("Do-While loop iteration: " + i);
i++;
} while (i < 3);
foreach 循环
用于遍历集合(如数组)。
csharp
string[] fruits = { "Apple", "Banana", "Cherry" };
foreach (string fruit in fruits)
{
Console.WriteLine("Fruit: " + fruit);
}
6.4. 跳转语句 (break, continue)
break: 立即退出当前循环或switch语句。continue: 跳过当前循环的剩余部分,进入下一次迭代。
csharp
for (int i = 0; i < 10; i++)
{
if (i == 3)
{
continue; // 当 i 为 3 时,跳过当前循环的剩余部分,直接进入 i=4 的迭代
}
if (i == 7)
{
break; // 当 i 为 7 时,退出整个循环
}
Console.WriteLine("Current number: " + i);
}
// 输出:0, 1, 2, 4, 5, 6
7. 数组 (Arrays)
数组是存储相同类型数据项的固定大小的序列。
声明和初始化数组:
“`csharp
// 声明一个整型数组,包含 5 个元素
int[] numbers = new int[5];
// 初始化数组
numbers[0] = 10;
numbers[1] = 20;
numbers[2] = 30;
numbers[3] = 40;
numbers[4] = 50;
// 声明并同时初始化
string[] cars = { “Volvo”, “BMW”, “Ford”, “Mazda” };
// 遍历数组
Console.WriteLine(“Numbers array:”);
for (int i = 0; i < numbers.Length; i++)
{
Console.WriteLine(numbers[i]);
}
Console.WriteLine(“Cars array:”);
foreach (string car in cars)
{
Console.WriteLine(car);
}
“`
8. 方法 (Methods)
方法(或函数)是包含一系列语句的代码块,用于执行特定任务。方法有助于代码重用和模块化。
“`csharp
class Calculator
{
// 这是一个不带参数,不带返回值的方法
public void SayHello()
{
Console.WriteLine(“Hello from Calculator!”);
}
// 这是一个带参数,不带返回值的方法
public void AddNumbers(int num1, int num2)
{
int sum = num1 + num2;
Console.WriteLine("Sum: " + sum);
}
// 这是一个带参数,带返回值的方法
public int MultiplyNumbers(int num1, int num2)
{
return num1 * num2;
}
// 静态方法(可以在不创建对象的情况下直接通过类名调用)
public static void DisplayMessage(string message)
{
Console.WriteLine("Message: " + message);
}
}
class Program
{
static void Main(string[] args)
{
// 调用静态方法
Calculator.DisplayMessage(“Welcome to Methods!”);
// 创建 Calculator 类的对象
Calculator myCalc = new Calculator();
// 调用对象的方法
myCalc.SayHello();
myCalc.AddNumbers(5, 7);
int product = myCalc.MultiplyNumbers(4, 6);
Console.WriteLine("Product: " + product);
}
}
“`
9. 注释 (Comments)
注释用于解释代码,提高可读性,并且在编译时会被忽略。
- 单行注释: 使用
// - 多行注释: 使用
/* ... */
“`csharp
// 这是一个单行注释
/
这是一个
多行注释
可以跨越多行
/
int x = 10; // 声明并初始化变量 x
“`
10. 类与对象 (Classes and Objects) – 简介
C# 是一种面向对象的语言。类是创建对象的蓝图,对象是类的实例。
“`csharp
// 定义一个 Car 类
class Car
{
// 成员变量(字段)
public string model;
public string color;
public int year;
// 成员方法
public void Drive()
{
Console.WriteLine(color + " " + model + " is driving!");
}
}
class Program
{
static void Main(string[] args)
{
// 创建 Car 类的两个对象
Car myCar1 = new Car(); // 创建第一个 Car 对象
myCar1.model = “Mustang”;
myCar1.color = “Red”;
myCar1.year = 1969;
Car myCar2 = new Car(); // 创建第二个 Car 对象
myCar2.model = "Model 3";
myCar2.color = "Blue";
myCar2.year = 2023;
Console.WriteLine(myCar1.model + " " + myCar1.color + " " + myCar1.year);
myCar1.Drive();
Console.WriteLine(myCar2.model + " " + myCar2.color + " " + myCar2.year);
myCar2.Drive();
}
}
``class Car
**解释:**
*: 定义了一个名为Car的类,它有model,color,year字段和Drive()方法。public
*: 访问修饰符,表示这些成员可以从类的外部访问。new Car()
*: 使用new关键字创建Car` 类的一个新实例(一个对象)。
总结
本教程涵盖了 C# 编程的基础语法,包括:
* 程序结构和 Main 方法
* 变量、数据类型和常量
* 各种运算符
* 条件语句 (if-else, switch)
* 循环语句 (for, while, do-while, foreach)
* 数组
* 方法
* 注释
* 类与对象的基本概念
掌握这些基础知识是学习 C# 的第一步。接下来,你可以深入学习面向对象编程的四大特性(封装、继承、多态、抽象)、集合、异常处理、文件 I/O、LINQ 以及更多高级主题。祝你学习愉快!
“`