2.7 C#语言介绍

C#(读作“C-Sharp”)是微软公司开发的一种现代、通用、面向对象的编程语言。它于2000年首次发布,并作为.NET框架的一部分进行推广。C#语言结合了C++的高性能和Visual Basic的简单易用,旨在提供一种既强大又易于学习的语言。

2.7.1.C#的历史背景

C#的开发始于1999年,由Anders Hejlsberg领导的团队负责。这一语言的设计初衷是为了支持软件组件的快速开发,并且具有跨平台兼容性。随着.NET Core和.NET 5/6的推出,C#进一步增强了跨平台的开发能力。

2.7.2.C#的主要特性

面向对象编程(OOP):C#完全支持面向对象编程,包括封装、继承和多态性。面向对象编程使得代码更具模块化和可维护性。

类型安全
:C#是一种强类型语言,编译器在编译时进行类型检查,从而减少运行时错误。类型安全性确保了变量只能包含特定类型的数据,从而提高了代码的可靠性。

自动垃圾回收:C#中的垃圾回收器(Garbage Collector)自动管理内存,从而减少内存泄漏和管理复杂性。开发者不需要手动释放内存,这有助于防止内存泄漏和其他与内存管理相关的问题。
简洁且易读的语法:C#的语法设计简单且一致,使得代码易于编写和维护。开发者可以迅速上手并编写高效的代码。

跨平台支持:通过.NET Core和.NET 5/6,C#可以在Windows、Linux和macOS等多种平台上运行。跨平台支持使得开发者可以编写一次代码并在多个平台上运行。
丰富的类库:C#提供了丰富的类库(Class Library),涵盖了从数据访问、网络通信到图形界面开发等各个方面的功能,使得开发工作更加高效。

2.7.3.C#的基础语法

变量和数据类型:C#支持多种数据类型,包括整数、浮点数、字符、字符串和布尔值。

int number = 10;
double price = 99.99;
string name = "John";
bool isActive = true;

条件语句:C#使用if、else if和else语句进行条件判断。

if (number > 0) {
   Console.WriteLine("Number is positive");
} else {
   Console.WriteLine("Number is not positive");
}

循环:C#支持多种循环结构,包括for循环、while循环和foreach循环。

for (int i = 0; i < 10; i++) {
   Console.WriteLine(i);
}
​
int j = 0;
while (j < 10) {
   Console.WriteLine(j);
   j++;
}
​
int[] numbers = { 1, 2, 3, 4, 5 };
foreach (int num in numbers) {
   Console.WriteLine(num);
}

方法:方法是C#中代码的基本组织单位,用于执行特定的任务。

public void Greet() {
   Console.WriteLine("Hello, World!");
}
​
public int Add(int a, int b) {
   return a + b;
}

类和对象:C#是面向对象的编程语言,类是对象的蓝图。

public class Person {
   public string Name { get; set; }
   public int Age { get; set; }
​
   public void Introduce() {
       Console.WriteLine($"Hello, my name is {Name} and I am {Age} years old.");
  }
}
​
Person person = new Person();
person.Name = "John";
person.Age = 30;
person.Introduce();

2.7.4.面向对象编程

C#支持所有面向对象编程的核心概念:

(1)类和对象

public class Person {
   public string Name { get; set; }
   public int Age { get; set; }
​
   public void Introduce() {
       Console.WriteLine($"Hello, my name is {Name} and I am {Age} years old.");
  }
}
​
Person person = new Person();
person.Name = "John";
person.Age = 30;
person.Introduce();

(2)继承:继承允许一个类从另一个类继承字段和方法,从而实现代码重用。

public class Employee : Person {
   public string Company { get; set; }
​
   public void Work() {
       Console.WriteLine($"{Name} is working at {Company}.");
  }
}
​
Employee employee = new Employee();
employee.Name = "John";
employee.Age = 30;
employee.Company = "ABC Corp";
employee.Work();

(3)多态性:多态性允许使用基类引用调用子类的方法,从而实现灵活的代码设计。

public class Animal {
   public virtual void Speak() {
       Console.WriteLine("Animal is making a sound");
  }
}
​
public class Dog : Animal {
   public override void Speak() {
       Console.WriteLine("Dog is barking");
  }
}
​
Animal myDog = new Dog();
myDog.Speak(); // 输出: Dog is barking

(4)封装:封装通过将数据和方法封装在类内部来保护数据,并提供公共接口进行访问。

public class BankAccount {
    private decimal balance;
​
    public void Deposit(decimal amount) {
        if (amount > 0) {
            balance += amount;
        }
    }
​
    public void Withdraw(decimal amount) {
        if (amount <= balance) {
            balance -= amount;
        }
    }
​
    public decimal GetBalance() {
        return balance;
    }
}
​
BankAccount account = new BankAccount();
account.Deposit(100);
account.Withdraw(50);
Console.WriteLine(account.GetBalance()); // 输出: 50

2.7.5.C#的高级特性

(1)LINQ(语言集成查询):LINQ使得查询操作可以直接在C#语言中进行,无论是对集合还是数据库。

int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var evenNumbers = from num in numbers
                 where num % 2 == 0
                 select num;
​
foreach (var num in evenNumbers) {
   Console.WriteLine(num); // 输出: 2, 4, 6, 8, 10
}

(2)异步编程:C#通过async和await关键字提供了强大的异步编程支持。

public async Task GetDataAsync() {
   using (HttpClient client = new HttpClient()) {
       string data = await client.GetStringAsync("http://example.com");
       return data;
  }
}
​
public async void ShowData() {
   string data = await GetDataAsync();
   Console.WriteLine(data);
}

(3)属性:属性是对类中字段的封装,提供了对字段的访问控制。

public class Person {
   private string name;
   public string Name {
       get { return name; }
       set { name = value; }
  }
}

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部