对结构、枚举、委托、事件、接口、泛型的初步理解

本文详细介绍了C#中的基础概念,包括结构体(值类型,存储在栈上)、枚举(一组相同类型元素的集合)、委托(持有方法的对象)、事件(程序事件通知机制)和接口(定义方法但不包含实现)。此外,还探讨了泛型在减少代码冗余和提高代码复用方面的应用。
摘要由CSDN通过智能技术生成

结构:

(3条消息) C#中结构体与类的区别_Jakeat的博客-CSDN博客_c#结构体和类的区别

结构和类相似,总体上可以把它看成类,其为值类型,在栈上分配内存,用于一些较小的数据。

枚举:

(4条消息) C#中枚举类型的作用_syaguang2006的博客-CSDN博客_c#枚举类型有什么用

枚举就是定义一组一样类型的元素(默认整形),值默认比前面一个大一,int(某个元素)就可以得到数值。

委托:

C# 用委托有什么好处? 它起什么作用? - asdyzh - 博客园 (cnblogs.com)

(4条消息) c#委托(Delegates)--基本概念及使用_陈一木木的博客-CSDN博客_委托

可以认为委托是持有一个或多个方法的对象,用delegate声明一个  返回类型 类型名(形参),

后面添加到委托里的方法返回类型和形参必须一样。可以指定添加其它类的方法,也可以把方法当作参数在另一个方法中传递或调用(如第二篇文章)。

事件:

C#委托与事件应用场景 - 猪猪AI乐乐 - 博客园 (cnblogs.com)

C# 事件(Event) | 菜鸟教程 (runoob.com)

C#中的“事件”的概念到底有什么用?什么时候会用到?-CSDN社区(有内涵)

事件为当一个特定的程序事件发生时,程序的其他部分可以得到该事件已经发生的通知。

就是某条程序执行,订阅这事件的程序也会随之执行。

接口:

C#中的接口如何使用以及具体用途-百度经验 (baidu.com)

接口内定义方法,不含任何内容。其它多个类可以对同一个方法进行程序编写,后可调用这个方法,如果类实现了接口,它必须实现接口的所有成员。

泛型:

(5条消息) C#泛型的理解/为什么要使用泛型/什么是泛型/怎么用泛型_悠然少年心的博客-CSDN博客_c# 为什么要用泛型

在类名后放置<T>。可以让不同类型共用一个代码,相当于用T去代表该变量属于什么类型,跟var有点像。


namespace 泛型
{
    class Program
    {
        static void Main(string[] args)
        {
            Apple apple = new Apple { Color = "red" };
            Books BB = new Books { Name = "wangjie" };
            Box box1 = new Box { cargo = apple };    //方法二
            Box box2 = new Box { Bcargo = BB };       //方法二
            //Books BB = new Books { Name = "wnagjie" };  方法一
            //BooksBox BBx = new BooksBox { cargo = BB };  方法一
            Console.WriteLine(box1.cargo.Color);
            //Console.WriteLine(BBx.cargo.Name); 方法一

        }
    }
    class Apple
    {
        public string Color { get ; set; }
    }
    class Box
    {
        public Apple cargo { get; set; }
        //方法二
        public Books Bcargo { get; set; }
    }
    class Books
    {
        public  string Name { get; set; }

    }
    //方法一
//    class BooksBox
//    {
//        public Books cargo { get; set; }
//    }
}

方法一会不断的声明不同类的盒子,会造成类膨胀。

方法二实例box时,只调用了类中的一个属性,会造成成员膨胀。

此时就需要泛型。

namespace 泛型
{
    class Program
    {
        static void Main(string[] args)
        {
            Apple apple = new Apple { Color = "red" };
            Books BB = new Books { Name = "wangjie" };
            Box<Apple> box1 = new Box<Apple> { cargo = apple };
            Box<Books> box2 = new Box<Books> { cargo = BB };
            Console.WriteLine(box1.cargo.Color);
            Console.WriteLine(box2.cargo.Name);

           
        }
    }
    class Apple
    {
        public string Color { get ; set; }
    }
    class Box<T>
    {
        public T cargo { get; set; }
        //方法二
  
    }
    class Books
    {
        public  string Name { get; set; }

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值