不多说,代码很简单,知识点都在里面,运行代码比较结果
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;
}
}