当前位置: 首页 > news >正文

C#:泛型与类和结构的比较(接口,结构体,类,泛型)

 接口属于抽象特性

 //接口不能直接实例化,只能通过实现它的类或结构体来使用

 //一个类或结构体可以实现多个接口

 //接口中的成员是抽象的,不能提供具体的实现

//核心用途:只需定义行为规范,不需要提供具体实现的时候  

结构体"属于值类型,常用来表示轻量化数据,例如:颜色,坐标点

* 内存在栈中,代表具体的数值
* 结构体不能定义显示无参构造函数,默认只能使用编辑器提供的
* 结构体不能继承其他类或其他结构体,但可以实现接口继承

* 类属于引用类型,用于定义对象结构和行为特征
* 内存在堆,由引用的意义
* 可以继承其他类,支持多态(有虚方法和重写)
* 可以定义无参构造函数,有参构造函数,和析构函数
* 类包含了字段,属性,方法,索引器,事件等
* 封装的概念在类中比较好体现
* 主要用途:有复杂的数据结构或行为,需要继承或多态特性,封装的需求

泛型

  * 泛型类属于一种特殊的类,使用类型参数来定义类的结构和行为,主要用途是提高代码的复用度和类型安全
  * 特点:泛型类在定义类型参数的时候需要用别名T之类的字符代替类型
  *      好处是避免类型转换错误
  *      避免装箱或拆箱操作
  *      
  *用途:支持用户自定义数据,对数据安全有要求的时候

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _3.泛型与类和结构的比较
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //接口(interface)结构体(struct) 类(class) 泛型:(Generic)
            //继承抽象的类
            Animal a1= new Animal();
            a1.Name = "朕";
            a1.Eat();
            //结构体
            Point p1 = new Point(10,20);
            p1.Print();
            //类
            Person pe = new Person(10, "秀秀");
            pe.Print();
            //泛型
            GenericBox<int> box = new GenericBox<int>(15);
            Console.WriteLine(box.getContent());
            box.setContent(20);
            Console.WriteLine(box.getContent());
        }
    }
    //接口属于抽象特性
    public interface IAnimal
    {
        //接口不能直接实例化,只能通过实现它的类或结构体来使用
        //一个类或结构体可以实现多个接口
        //接口中的成员是抽象的,不能提供具体的实现
        void Eat();//定义方法
        string Name { get; set; }//定义属性

        //核心用途:只需定义行为规范,不需要提供具体实现的时候                                               
    }
    public class Animal : IAnimal
    {
        public string Name { get; set; }
        public void Eat()
        {
            Console.WriteLine($"我叫{Name}");
        }
    }
    //结构体"属于值类型,常用来表示轻量化数据,例如:颜色,坐标点
    public struct Point
    {
        /*
         * 内存在栈中,代表具体的数值
         * 结构体不能定义显示无参构造函数,默认只能使用编辑器提供的
         * 结构体不能继承其他类或其他结构体,但可以实现接口继承
         * 
         */
        public int X { get; set; }
        public int Y { get; set; }
        public Point(int x, int y)
        {
            X = x;
            Y = y;
        }
        public void Print()
        {
            Console.WriteLine($"{X},{Y}");
        }
    }

    //类
    public class Person
    {
        /*
         * 类属于引用类型,用于定义对象结构和行为特征
         * 内存在堆,由引用的意义
         * 可以继承其他类,支持多态(有虚方法和重写)
         * 可以定义无参构造函数,有参构造函数,和析构函数
         * 类包含了字段,属性,方法,索引器,事件等
         * 封装的概念在类中比较好体现
         * 
         * 主要用途:有复杂的数据结构或行为,需要继承或多态特性,封装的需求
         */
        public int Id { get; set; }
        public string Name { get; set; }

        public Person(int id, string name)
        {
            Id = id;
            Name = name;
        }
        public void Print()
        {
            Console.WriteLine($"{Id},{Name}");
        }
    }
    public class GenericBox<T>
    {
        /*
         * 泛型类属于一种特殊的类,使用类型参数来定义类的结构和行为,主要用途是提高代码的复用度和类型安全
         * 
         * 特点:泛型类在定义类型参数的时候需要用别名T之类的字符代替类型
         *      好处是避免类型转换错误
         *      避免装箱或拆箱操作
         *      
         *用途:支持用户自定义数据,对数据安全有要求的时候
         */
        public T Content { get; set; }//属性

        public GenericBox(T content)//构造函数
        {
            Content = content;
        }
        public T getContent()//方法
        {
            return Content;
        }
        public void setContent(T content)//方法
        { 
            this.Content = content; 
        }

    }


}

相关文章:

  • 文件操作 -- IO [Java EE 初阶]
  • 浅谈C++/C命名冲突
  • MySQL的存储引擎
  • Postman接口测试工具使用
  • Redis 分布式锁
  • DeepSeek R1 简易指南:架构、本地部署和硬件要求
  • 【RAG生成】生成模块核心技术解密:从理论到实践的全链路优化
  • RabbitMQ 的介绍与使用
  • 极速探索 HarmonyOS NEXT:开启国产操作系统开发的新篇章
  • Unity 列表滚动到指定位置
  • c++ std::array使用笔记
  • Python之re模块
  • 【HarmonyOS Next】鸿蒙状态管理装饰器V1和V2混用方案
  • 【Linux】进程间通信——命名管道
  • ONNX转RKNN的环境搭建
  • 计算机毕设-基于springboot的融合多源高校画像数据与协同过滤算法的高考择校推荐系统的设计与实现(附源码+lw+ppt+开题报告)
  • STM32 物联网智能家居 (七) 设备子系统--风扇控制
  • 以太坊测试网
  • 学术ppt模板_院士增选_自然科学奖_技术发明奖_科技进步奖_杰青_长江学者特聘教授_校企联聘长江学者_重点研发_优青_青长_青拔ppt制作案例
  • Spring Boot中Bean Validation的实战应用
  • 西城网站建设/上海seo网站优化软件
  • 爱搜索中级网站建设/大连网络推广
  • 网站建设基本流程视频/河南优化网站
  • 做招聘网站怎么样/品牌策划
  • 大型移动网站建设/品牌策略包括哪些内容
  • 制作网站首页教案/今天的最新新闻内容