C# 打包要传递给方法的对象
在项目中,有多个山羊对象的实例,其创建方式如下:C# 打包要传递给方法的对象,c#,C#,在项目中,有多个山羊对象的实例,其创建方式如下: Goat nubian = GetProductionStatistics(nubian); Goat alpine = GetProductionStatistics(alpine); Goat saanen = GetProductionStatistics(saanen); 一旦创建,这些将传递给另一个方法,如下所示: CalculateProductionPotential(nubian, alpine, saanen); 考虑到将来
Goat nubian = GetProductionStatistics(nubian);
Goat alpine = GetProductionStatistics(alpine);
Goat saanen = GetProductionStatistics(saanen);
一旦创建,这些将传递给另一个方法,如下所示:
CalculateProductionPotential(nubian, alpine, saanen);
考虑到将来会添加更多种类的山羊,我想将山羊对象“打包”成一个东西,我们称之为
allgoes
,它可以传递给将其作为参数的方法:CalculateProductionPotential(allgoes)
。这将消除每次修改方法签名的情况。如何实现这一点?您的代码令人困惑,因为您正在将goat对象传递给创建它的工厂。假设你真的想传递一个字符串或其他东西…下面是如何做到这一点:
class Program
{
static void Main(string[] args)
{
var goats = new List<Goat>
{
{GetProductionStatistics("nubian") },
{GetProductionStatistics("alpine") },
{GetProductionStatistics("saanen") }
};
CalculateProductionPotential(goats);
}
private static void CalculateProductionPotential(List<Goat> goats)
{
foreach (var goat in goats)
{
// Process here
}
}
private static Goat GetProductionStatistics(string type)
{
var goat = new Goat();
// Some processing...
return goat;
}
}
类程序
{
静态void Main(字符串[]参数)
{
var=新列表
{
{GetProductionStatistics(“努比亚”)},
{GetProductionStatistics(“阿尔卑斯”)},
{GetProductionStatistics(“saanen”)}
};
计算生产潜力(山羊);
}
私有静态void计算生产潜力(列表)
{
foreach(山羊中的山羊)
{
//在这里处理
}
}
私有静态产品统计(字符串类型)
{
var山羊=新山羊();
//一些处理。。。
返回山羊;
}
}
创建一个列表
,将元素添加到此列表并传递它?您所描述的是一个集合。没错,在CalculateProductionPotential
中,有一个特定于努比亚品种的逻辑。如何隔离属于努比亚人的列表项以应用该逻辑?您的山羊类应该具有指示山羊类型的属性。所以如果(goat.Type==“努比亚”)。。。在现实世界中,可能会有一个枚举而不是字符串,但这说明了这一点。