C#语言基础速成Day05

“好读书,不求甚解;每有会意,便欣然忘食。”


写在开始

昨天我们学习了C#语言的二维数组和结构体,今天我们一起来看一下C#面向对象和高级特性:

学习是一个持之以恒的过程,当你见识到越多的大佬,越来越多的天才,才会明白自己差距所在,每每这时,你的耳边会不会想起那句“菜就多练”呢?写博客也是为了鞭策我不断的去学习,去思考怎么才能变得更加强大。人生就是这样,To learn To cope. 去学习,去应对。与君共勉。

C#的面向对象与Java类似,是一种高效的思想,我们可以联系Java面向对象的特性来学习。

文章有误敬请斧正 不胜感恩!||Day05

以下是本篇文章正文内容:

一、C#面向对象编程简介

C#(发音为“C Sharp”)是一种现代的、面向对象的编程语言,由微软开发,作为其 .NET 框架的一部分。面向对象编程(OOP)是一种编程范式,基于“对象”和“类”的概念,旨在提高代码的可重用性、可扩展性和可维护性。

1. 类与对象

  • 类(Class):类是对象的蓝图或模板,定义了对象的属性和行为。例如,可以定义一个“Person”类,包含“Name”和“Age”属性以及“Speak”行为。
  • 对象(Object):对象是类的实例化,代表实际存在的实体。例如,可以创建一个“John”对象,他是“Person”类的实例,拥有具体的“Name”和“Age”。
public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }

    public void Speak()
    {
        Console.WriteLine($"My name is {Name} and I am {Age} years old.");
    }
}

// 实例化对象
Person john = new Person();
john.Name = "John";
john.Age = 30;
john.Speak(); // 输出:My name is John and I am 30 years old.

2. 封装(Encapsulation)

封装是将对象的状态(属性)和行为(方法)隐藏在类内部,只通过公开的方法访问和修改。这提高了数据的安全性和代码的可维护性。

public class BankAccount
{
    private decimal balance;

    public void Deposit(decimal amount)
    {
        if (amount > 0)
        {
            balance += amount;
        }
    }

    public decimal GetBalance()
    {
        return balance;
    }
}

3. 继承(Inheritance)

继承允许一个类(子类)从另一个类(父类)继承属性和行为,从而实现代码的重用和扩展。

public class Animal
{
    public void Eat()
    {
        Console.WriteLine("Eating...");
    }
}

public class Dog : Animal
{
    public void Bark()
    {
        Console.WriteLine("Barking...");
    }
}

// 实例化对象
Dog myDog = new Dog();
myDog.Eat();  // 输出:Eating...
myDog.Bark(); // 输出:Barking...

4. 多态(Polymorphism)

多态性允许对象以不同的方式响应相同的消息,通常通过方法重载和方法重写实现。

public class Animal
{
    public virtual void MakeSound()
    {
        Console.WriteLine("Some generic animal sound");
    }
}

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

Animal myAnimal = new Dog();
myAnimal.MakeSound(); // 输出:Bark

二、C#高级特性

1. 委托和事件(Delegates and Events)

委托是一种引用方法的类型,可以将方法作为参数传递。事件是委托的特殊形式,用于实现发布-订阅模式。

public delegate void Notify();  // 定义委托

public class ProcessBusinessLogic
{
    public event Notify ProcessCompleted; // 定义事件

    public void StartProcess()
    {
        // 执行某些操作
        OnProcessCompleted();
    }

    protected virtual void OnProcessCompleted()
    {
        ProcessCompleted?.Invoke();
    }
}

public class Program
{
    public static void Main()
    {
        ProcessBusinessLogic bl = new ProcessBusinessLogic();
        bl.ProcessCompleted += Bl_ProcessCompleted; // 订阅事件
        bl.StartProcess();
    }

    private static void Bl_ProcessCompleted()
    {
        Console.WriteLine("Process Completed!");
    }
}

2. Lambda表达式(Lambda Expressions)

Lambda表达式是简洁的匿名方法,可以用于简化代码,特别是在LINQ查询中。

List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
var evenNumbers = numbers.Where(n => n % 2 == 0).ToList();

evenNumbers.ForEach(n => Console.WriteLine(n)); // 输出:2 4

在这里插入图片描述

3. LINQ(Language Integrated Query)

LINQ是一组方法和语法,允许对集合进行查询和操作。

List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
var evenNumbers = from n in numbers
                  where n % 2 == 0
                  select n;

foreach (var num in evenNumbers)
{
    Console.WriteLine(num); // 输出:2 4
}
4. 异步编程(Asynchronous Programming)

异步编程使程序能够在等待长时间运行的任务时保持响应。

public async Task<string> DownloadDataAsync(string url)
{
    using (HttpClient client = new HttpClient())
    {
        string result = await client.GetStringAsync(url);
        return result;
    }
}

public async Task ProcessDataAsync()
{
    string data = await DownloadDataAsync("https://example.com");
    Console.WriteLine(data);
}

5. 泛型(Generics)

泛型允许类、方法、接口和委托在定义时不指定特定的数据类型,提高了代码的重用性和类型安全性。

public class GenericList<T>
{
    private List<T> items = new List<T>();

    public void Add(T item)
    {
        items.Add(item);
    }

    public T GetItem(int index)
    {
        return items[index];
    }
}

GenericList<int> intList = new GenericList<int>();
intList.Add(1);
intList.Add(2);
Console.WriteLine(intList.GetItem(0)); // 输出:1

总结

C#的面向对象是及其重要的部分,只有掌握了面向对象的思想才算掌握了精髓部分。

同时,C#提供了丰富的特性和功能,使开发者能够编写高效、可维护的代码。通过理解和应用这些特性,我们可以大大提高自己的编程能力和项目的质量。

  • 24
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

blaizeer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值