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

在这里插入图片描述

在这里插入图片描述

使用泛型定义一个父类

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, 泛型委托
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

潘诺西亚的火山

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

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

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

打赏作者

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

抵扣说明:

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

余额充值