gpt4 book ai didi

c# - 使具体的返回类型通用

转载 作者:行者123 更新时间:2023-11-30 19:27:50 25 4
gpt4 key购买 nike

考虑以下两种方法,它们本质上是相互复制和粘贴的版本

public static List<Book> GetSubSet(List<Book> incomingList)
{
List<Book> returnList = new List<Book>();
Random r = new Random();
Console.WriteLine("Enter size of random subset: ");
int randomInt = 0;
int size = Convert.ToInt32(Console.ReadLine());
while (size > incomingList.Count)
{
Console.WriteLine("Size too large, enter smaller subset: ");
size = Convert.ToInt32(Console.ReadLine());
}
while (returnList.Count < size)
{
randomInt = r.Next(incomingList.Count);
if (!returnList.Contains(incomingList[randomInt]))
{
returnList.Add(incomingList[randomInt]);
}
}
return returnList;
}

public static List<Pet> GetSubSet(List<Pet> incomingList)
{
Random r = new Random();
List<Pet> returnList = new List<Pet>();
Console.WriteLine("Enter random subset size: ");
int size = Convert.ToInt32(Console.ReadLine());
while (size > incomingList.Count)
{
Console.WriteLine("Size too large. Enter random subset size: ");
size = Convert.ToInt32(Console.ReadLine());
}
while (returnList.Count < size)
{
int randomInt = r.Next(incomingList.Count);
if (!returnList.Contains(incomingList[randomInt]))
{
returnList.Add(incomingList[randomInt]);
}
}

return returnList;
}

显然这不是很面向对象,我希望有一个方法可以处理任何类型。我不想使用继承,因为书和狗之间没有逻辑联系,我也不想包含类型,因为包含也没有意义。所以我们留下了一个界面。有点像

 interface ISubset
{

IEnumerable<T> GetSubset();
}

我见过,但我不知道如何让尖括号接受任何泛型。如何使 IEnumerable 类型泛化,以便我可以在任何类上实现 GetSubset 方法?

最佳答案

使其通用:

    public static List<T> GetSubSet<T>(List<T> incomingList)
{
Random r = new Random();
List<T> returnList = new List<T>();
Console.WriteLine("Enter random subset size: ");
int size = Convert.ToInt32(Console.ReadLine());
while (size > incomingList.Count)
{
Console.WriteLine("Size too large. Enter random subset size: ");
size = Convert.ToInt32(Console.ReadLine());
}
while (returnList.Count < size)
{
int randomInt = r.Next(incomingList.Count);
if (!returnList.Contains(incomingList[randomInt]))
{
returnList.Add(incomingList[randomInt]);
}
}

return returnList;
}

关于c# - 使具体的返回类型通用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17457697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com