泛型类, 泛型接口的继承, 委托, 反射

2023-10-26

在这里插入图片描述

在这里插入图片描述

使用泛型定义一个父类

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

namespace Practice
{
    public class Power<T1,T2,T3>
    {
        public Power(T1 age, T2 gender, T3 name) //重新定义构造函数时, 可以使用this指向最全的构造函数,缺的参数用默认值代替.只能用在指定类型int之类,不能T1 T2
        {
            this.Age = age;
            this.Gender = gender;
            this.Name = name;
        }
        private T1 _age;
        private T2 _gender;
        private T3 _name;
        
        public T1 Age { get => _age; set => _age = value; }
        public T2 Gender { get => _gender; set => _gender = value; }
        public T3 Name { get => _name; set => _name = value; }

        void Poweron()
        {
            Console.WriteLine("电源已接通");
        }
        void Poweroff()
        {
            Console.WriteLine("电源已关闭");
        }
    }
}

定义一个接口

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

namespace Practice
{
    interface Iprinter
    {
        void Fax();
        void Print();
        void Copy();
    }
}

同时使用继承和接口构造对象

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

namespace Practice
{
    public class HP<T1,T2,T3,T4> : Power<T1,T2,T3>,Iprinter
    {
        public HP(T1 age, T2 gender, T3 name, T4 id) : base(age, gender, name)
        {
            this.Id = id;
        }
        //private int _id;

        public T4 Id { get; set; }

        public void Ink()
        {
            Console.WriteLine("惠普打印机缺油墨");
        }
        public void Copy()
        {
            Console.WriteLine("正在使用惠普打印机复印");
        }

        public void Fax()
        {
            Console.WriteLine("正在使用惠普打印机传真");
        }

        public void Print()
        {
            Console.WriteLine("正在使用惠普打印机打印");
        }
    }
}

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

namespace Practice
{
    public class Connon<T1, T2, T3,T4> : Power<T1,T2,T3>, Iprinter
    {
        public Connon(T1 age, T2 gender, T3 name,T4 id) : base(age, gender, name)
        {
            this.Id = id;
        }
        private T4 _id;

        public T4 Id { get => _id; set => _id = value; }
        public void Ink()
        {
            Console.WriteLine("佳能打印机缺油墨");
        }
        public void Copy()
        {
            Console.WriteLine("正在使用佳能打印机复印");
        }

        public void Fax()
        {
            Console.WriteLine("正在使用佳能打印机传真");
        }

        public void Print()
        {
            Console.WriteLine("正在使用佳能打印机打印");
        }
    }
}

实现泛型类

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

namespace Practice
{
    class Program
    {
        static void Main(string[] args)
        {
            int age = 0;
            char gender = '男';
            string name = "printer";
            int id = 1;
            List<Iprinter> list = new List<Iprinter>()
            {
                new HP<int,char,string,int>(age,gender,name,id ), //Iprinter Hp
                new Connon<int,char,string,int>(age, gender, name, id) //Iprinter Con
            };

            foreach (var item in list)
            {
                item.Fax();
            }
            Console.ReadKey();
         
        }
    } 

泛型委托, 以及Func和Action泛型

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

namespace Practice
{
    class Program
    {
        static void Main(string[] args)
        {
            //1, 泛型委托
            DelePrinter<int> printt = (int a, int b) => { return a + b; };
            Console.WriteLine(printt(3, 10));
            Console.ReadKey();

            //Func委托 有返回值
            Func<int, int, double> func = (a, b) => { return a + b; };
            Console.WriteLine(func(3, 10));
            Console.ReadKey();

            //Action委托, 无返回值
            Action<int, double> action = (a, b) => { Console.WriteLine("第一个数是{0},第二个数是{1}", a, b); };
            action(3, 10);
            Console.ReadKey();
        }
    } 

    public delegate T DelePrinter<T>(T name, T age);//1, 泛型委托
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

泛型类, 泛型接口的继承, 委托, 反射 的相关文章

随机推荐

  • 遇到pdf文件损坏打不开要如何解决?

    在我们平时的办公中 会使用电脑来编辑 接收各种电子文件 大家会发现pdf文件是我们经常使用的一种文件类型 但是 有时候 我们会发现自己的pdf文件根本打不开 相信很多朋友遇到这种情况不知道该怎么办 如果你也想知道具体的原因和解决方法 就跟着
  • 服务器运维方法

    为保官网的正常稳定运行 也为了更好的对服务器进行管理维护 特制定以下运维方案 1 硬件系统管理 一 服务器运行稳定性 服务器在运往托管商处上架前 应对服务器的稳定性进行全面的测试 包括网站主程序的测试 网站数据库的测试 网站压力测试等多项内
  • C++复习笔记--auto A:B 的使用

    1 用法 1 1 for auto A B 利用 A 遍历并获取 B 容器中的每一个值 但不会影响容器 B 的内容 include
  • SpringCloudAlibaba微服务架构搭建(四)Gateway网关(包含源码)

    目录 前言 1 什么是Spring Cloud Gateway 2 核心概念与架构解析 1 Route 路由 2 谓语 断言 3 Filter 过滤器 4 负载均衡与动态路由 编辑 3 请求路由与负载均衡 请求路由 负载均衡 动态路由 4
  • 常用文件扩展名介绍

    我们对文件命名是以扩展名加以区分 即文件名格式为 主文件名 扩展名 系统文件按照不同的格式和用途进行分类 以下是常用文件扩展名介绍 1 txt 记事本 2 doc docx word文档 3 xls xlsx excel表格 4 ppt p
  • chatgpt每日问答

    20230411 将数组转成十六进制字符串 array 12 34 56 78 90 hex string join 02x format x for x in array print hex string 20230409 变声 用pyt
  • 中文情感分类

    本文通过ChnSentiCorp数据集介绍了文本分类任务过程 主要使用预训练语言模型bert base chinese直接在测试集上进行测试 也简要介绍了模型训练流程 不过最后没有保存训练好的模型 一 任务和数据集介绍 1 任务 中文情感分
  • 【spring boot】service层事务控制

    我们再做spring boot项目的时候 经常需要在一个service层调用多个dao层 操作不同的数据库表来实现业务 这个时候要对事务进行一个统一的过程 spring boot提供了这种支持 首先需要在service层添加 Transac
  • JSP数据交互(二)---》jsp四大作用域

    jsp四大作用域 application作用域 对应整个应用上下文 page作用域 作用域指本JSP页面范围 pageContext setAttribute 键 值 pageContext getAttribute 键 为
  • 电商平台数据查询工具(京东数据分析软件)

    京东爆款如何打造 是很多商家都头疼的问题 下面 6个步骤分享给大家 首先是选品 对于处于不同阶段的商家来说 选品方式不同 针对正准备开店的商家 选品可通过以下方式 1 市场分析和自身情况 确定主打品类 2 行业市场和京东平台市场 品类多维度
  • 使用R语言生成相同分组数据的抽样ID,并生成测试集和训练集

    使用R语言生成相同分组数据的抽样ID 并生成测试集和训练集 在进行数据分析或机器学习任务时 我们经常需要将数据集划分为训练集和测试集 为了确保实验结果的可复现性 我们需要为相同分组的数据生成相同的抽样ID 本文将介绍如何使用R语言实现这一过
  • pbr制作

    http www aboutcg org course tut sd 141015 http www zf3d com news asp id 27081
  • 数学中的导数

    导数 Derivative 是微积分学 微积分学是研究极限 微分学 积分学和无穷级数等的一个数学分支 中重要的基础概念 一个函数在某一点的导数描述了这个函数在这一点附件的变化率 导数的本质是通过极限的概念对函数进行局部的线性逼近 当函数f的
  • python代码,两个4*4旋转矩阵之间的位姿变化,相对旋转矩阵

    python代码 两个4 4旋转矩阵之间的位姿变化 也就是求两个旋转矩阵之间的相对旋转矩阵 import numpy as np def get transform matrix rot mat1 rot mat2 Calculate th
  • asp.net毕业设计题目选择

    1 asp net 超市管理系统 rar 2 客户关系系统 rar 3 ASP NET BS结构的城市酒店入住信息管理系统的设计 源代码 论文 rar 4 asp net FTP客户端设计与开发 源代码 论文 rar 5 ASP NET 网
  • DNS 配置错误

    curl 6 Could not resolve host 今天看 ttrss 的时候发现文章都是两天前的了 感觉不太对劲 经过查验提示curl 6 Could not resolve host 在查找过资料后 是 DNS 出现了 下面给出
  • 前端工程化(2):postCss 和 babel的使用

    前端工程化 2 postCss 和 babel的使用 本文例子可以点击这里 0 前言 babel是什么 官网给出的定义 Babel 是一个工具链 主要用于将 ECMAScript 2015 版本的代码转换为向后兼容的 JavaScript
  • eclipse was unable to locate its companion shared library

    当转移或者Copy工程时 eclipse was unable to locate its companion shared library eclipse ini 里面的路径配置错误导致 launcher library C Users
  • 三个好用前端编辑工具推荐+推荐原因(VSCode、WebStrom、HbuilderX 的推荐对比,不纠结 !)

    市面上编辑器挺多的 之前写过一期 一年了 更新一下 先上结论 如果 电脑配置差 颜狗 建议用VSCode 如果 你认为你0基础还笨 建议用Hbuider培养兴趣 否则 WebStorm 暂时是前端写代码的无二选择 或者 我全都要 以下是个人
  • 泛型类, 泛型接口的继承, 委托, 反射

    使用泛型定义一个父类 using System using System Collections Generic using System Linq using System Text using System Threading Task