C# 泛型的知识点使用回顾

不多说,代码很简单,知识点都在里面,运行代码比较结果

using ConsoleApp1.Model;
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApp1.Generic
{
    class GenericDemo
    {
        //public const string data = "abc";
        //public readonly string dataR = "abc";
        public void getDataObject(object i)
        {
            Console.WriteLine($"当前的数据是{i}");
        }

        //泛型方法
        public void getDataGeneric<T>(T i)
        {
            Console.WriteLine($"当前的数据是{i}");
        }

        
        /// <summary>
        /// 应用场景: 从一个场景中获取数据,进行判断是否大于某一个值,将其放入另一个集合返回
        /// </summary>
        /// <param name="students"></param>
        /// <param name="func"></param>
        /// <returns></returns>
        public static List<Studen> getWhereData(List<Studen> students,Func<Studen,bool> func)
        {
            List<Studen> students1 = new List<Studen>();
            Console.WriteLine("逐步泛化");
            foreach (var item in students)
            {
                if (func.Invoke(item))
                {
                    students1.Add(item);
                }
            }
            return students1;
        }
        /// <summary>
        /// 泛型方法, getWhereData后面 一定要加<T> 
        /// getWhereData<T>
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="students"></param>
        /// <param name="func"></param>
        /// <returns></returns>
        public static IEnumerable<T> getWhereDataIEnumerable<T>(IEnumerable<T> students, Func<T, bool> func)
        {
            //IEnumerable<T> students1 = new IEnumerable<T>();
            Console.WriteLine("逐步泛化");
            foreach (var item in students)
            {
                if (func.Invoke(item))
                {
                    //students1.Add(item);
                    yield return item;
                }
            }
            
        }

        public static List<T> getWhereDataT<T>(List<T> students, Func<T, bool> func)
        {
            List<T> students1 = new List<T>();
            Console.WriteLine("逐步泛化");
            foreach (var item in students)
            {
                if (func.Invoke(item))
                {
                    students1.Add(item);
                }
            }
            return students1;
        }
    }
    /// <summary>
    /// 泛型类
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public class GenericList<T>
    {
        public void Show<T>(){

        }
        public void Add(T t)
        {

        }
    }
    /// <summary>
    /// 泛型接口
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public interface IGenericList<T>
    {
        void Show<T>();
    }
}

using ConsoleApp1.Model;
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApp1.Generic
{
    class GenericMain : IGenericDemoThird<string>
    {
        public static void main()
        {
            GenericDemo demo = new GenericDemo();
            Console.WriteLine("##########22222###");
            demo.getDataObject(2);
            demo.getDataObject("2");
            demo.getDataObject(2.1);
            demo.getDataObject(2.11);
            Console.WriteLine("##########3333###");
            demo.getDataGeneric(3);
            demo.getDataGeneric("3");
            demo.getDataGeneric(3.1);
            demo.getDataGeneric(3.11);
            {
                GenericList<float> generic = new GenericList<float>();
                generic.Add(12.2f);
                Studen st = new Studen();
                GenericList<Studen> genericList = new GenericList<Studen>();
                genericList.Add(st);

            }
            List<Studen> studens = new List<Studen> {
                new Studen() { stuId = 1, stuName = "xiao 1", stuAge = 13 },
                new Studen() { stuId = 2, stuName = "xiao 2", stuAge = 23 },
                new Studen() { stuId = 3, stuName = "xiao 3", stuAge = 33 },
                new Studen() { stuId = 4, stuName = "xiao 4", stuAge = 43 },
                new Studen() { stuId = 5, stuName = "xiao 5", stuAge = 53 },
                new Studen() { stuId = 6, stuName = "xiao 6", stuAge = 63 },
            };
            {
                Console.WriteLine("##########44444###");

                List<Studen> studens1 = new List<Studen>();
                studens1 = GenericDemo.getWhereData(studens, FucFunc);
                foreach (Studen item in studens1)
                {
                    Console.WriteLine($"---{item.stuAge}---{item.stuName}");
                }
            }
            {
                Console.WriteLine("##########5555###");
                List<Studen> studens1 = new List<Studen>();
                studens1 = GenericDemo.getWhereDataT(studens, FucFunc);
                
                
                foreach (Studen item in studens1)
                {
                    Console.WriteLine($"---{item.stuAge}---{item.stuName}");
                }
            }

            {
                Console.WriteLine("########66666###");
                //List<Studen> studens1 = new List<Studen>();
                IEnumerable<Studen> studens1 = GenericDemo.getWhereDataIEnumerable(studens, FucFunc);


                foreach (Studen item in studens1)
                {
                    Console.WriteLine($"---{item.stuAge}---{item.stuName}");
                }
            }

        }
        public static bool FucFunc(Studen st)
        {
            if (st.stuAge>23)
            {
                return true;
            }
            return false;
        }

        public void show()
        {
            Console.WriteLine("我是普通的接口");
        }

        //public void show(string t)
        //{
        //    Console.WriteLine($"--{t}--我是普通的接口");
        //}

        public void show(string t)
        {
            Console.WriteLine($"--{t}--我是普通的接口");
        }
    }
}

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApp1.Generic
{
    /// <summary>
    /// 普通的接口
    /// </summary>
    public interface IGenericDemo
    {
        void show();
        Delegate ab(string a);
    }

    public interface IGenericDemoSec<T>
    {
        void show(T t);
    }

    public interface IGenericDemoThird<T> where T : class
    {
        void show(T t);
    }
}

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApp1.Model
{
    class Studen
    {
        public int stuId;
        public string stuName;
        public int stuAge;
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值