根据给定的文件标题、描述、标签以及部分内容,本文旨在为有一定 C++ 基础但没有太多时间深入学习 C# 的读者提供一个快速入门指南。以下是对文章中提到的关键知识点的详细阐述:
### 一小时内学会 C# 的核心概念
#### 1. 编程结构
- **大小写敏感**:与 C++ 相同,C# 也是大小写敏感的语言。
- **分号**:与 C++ 一样,C# 中的语句结束以分号(;)表示。
- **单一文件**:与 C++ 的头文件和源文件分离不同,C# 中的所有代码(包括类的声明和实现)都在同一个扩展名为 `.cs` 的文件中。
- **主函数**:C# 的主函数名为 `Main`,并且首字母大写。
#### 2. 命名空间
- **作用**:命名空间用于组织和管理类,类似于 C++ 中的作用域。
- **使用方式**:通过 `using` 关键字引入其他命名空间中的类。
- **顶级命名空间**:`System` 命名空间是 .NET Framework 的根命名空间。
#### 3. 数据类型
- **分类**:分为基本/内建类型和用户定义类型。
- **基本类型**:包括但不限于 `byte`、`sbyte`、`short`、`ushort`、`int`、`uint`、`long`、`ulong`、`float`、`double`、`decimal`、`string`、`char`、`bool`。
- **用户定义类型**:包括类、结构体、接口。
- **值类型 vs. 引用类型**:值类型直接在栈中分配内存,而引用类型则在堆中分配,且支持自动垃圾回收。
#### 4. 变量
- **初始化**:C# 中的变量必须在使用前初始化。
- **不可访问“悬挂”指针**:C# 不支持对“悬挂”指针的访问。
- **数组边界检查**:C# 会在运行时检查数组索引是否超出边界。
#### 5. 运算符与表达式
- **基本运算符**:与 C++ 类似。
- **新增运算符**:例如 `is` 运算符用于检查类型相等或可转换;`as` 运算符用于类型转换,如果转换失败则返回 null。
#### 6. 枚举
- **定义**:使用 `enum` 关键字定义枚举类型,用于表示一组固定的数值常量。
- **示例**:
```csharp
enum Weekdays
{
Saturday, Sunday, Monday, Tuesday, Wednesday, Thursday, Friday
}
```
#### 7. 类与结构
- **类**:在堆中分配内存,使用 `new` 关键字创建实例。
- **结构体**:在栈中分配内存,适用于轻量级的数据类型。
- **示例**:
```csharp
struct Date
{
int day;
int month;
int year;
}
class Date
{
int day;
int month;
int year;
string weekday;
string monthName;
public int GetDay()
{
return day;
}
}
```
#### 8. 修饰符
- **readonly**:用于类的数据成员,一旦初始化就不能改变。
- **sealed**:用于类,表明该类不能被继承。
- **unsafe**:用于定义不安全上下文,在其中可以使用指针等 C++ 风格的操作。
#### 9. 属性
- **定义**:属性提供了一种更简洁的方式来访问类的私有字段。
- **示例**:
```csharp
public int Day
{
get { return day; }
set { day = value; }
}
```
#### 10. 接口
- **定义**:使用 `interface` 关键字声明接口。
- **实现**:类通过实现接口来支持接口定义的行为。
- **示例**:
```csharp
interface myDrawing
{
int originx
{
get;
set;
}
int originy
{
get;
set;
}
void Draw(object shape);
}
```
#### 11. 函数参数
- **按值传递**:将值的副本传递给函数。
- **按引用传递**:使用 `ref` 关键字传递参数的引用。
- **输出参数**:使用 `out` 关键字从函数返回值。
#### 12. 数组
- **创建**:使用 `new` 关键字创建数组。
- **类型**:支持一维、多维和交错数组。
- **示例**:
```csharp
int[] array = new int[10]; // 一维数组
int[,] array2 = new int[5, 10]; // 二维数组
int[,,] array3 = new int[5, 10, 5]; // 三维数组
```
#### 13. 索引器
- **定义**:索引器使得可以通过索引直接访问类中的元素。
- **示例**:
```csharp
public Shape this[int index]
{
get { return (Shape)List[index]; }
set { List[index] = value; }
}
```
#### 14. 装箱与拆箱
- **装箱**:将值类型转换为引用类型。
- **拆箱**:将引用类型转换回值类型。
- **示例**:
```csharp
int myInt = 12;
object obj = myInt; // 装箱
int myInt2 = (int)obj; // 拆箱
```
#### 15. 委托
- **定义**:委托是一种引用类型,用于封装方法的引用。
- **示例**:
```csharp
delegate int Operation(int val1, int val2);
public int Add(int val1, int val2)
{
return val1 + val2;
}
public void Perform()
{
Operation Oper;
//...
if (optor == "+")
Oper = new Operation(Add);
else
Oper = new Operation(Subtract);
Console.WriteLine("Result = {0}", Oper(val1, val2));
}
```
#### 16. 继承与多态
- **单一继承**:C# 支持单一继承。
- **多态**:通过虚方法实现。
- **示例**:
```csharp
class Shape
{
public virtual void Draw()
{
Console.WriteLine("Shape.Draw");
}
}
class Rectangle : Shape
{
public override void Draw()
{
Console.WriteLine("Rectangle.Draw");
}
}
```
### 总结
本文通过一系列的示例介绍了 C# 的基本概念和技术要点,适合那些有一定 C++ 基础的读者在短时间内掌握 C# 的关键特性。通过阅读本文,读者不仅能够快速了解 C# 的编程结构、数据类型、变量、运算符与表达式等方面的基本知识,还能够掌握诸如枚举、类与结构、属性、接口、数组、索引器、装箱与拆箱、委托、继承与多态等更高级的主题。这些知识对于进一步深入学习 C# 和 .NET 开发至关重要。
- 1
- 2
- 3
前往页