C# 返回数组中方法值最高的对象

C# 返回数组中方法值最高的对象,c#,methods,foreach,return,C#,Methods,Foreach,Return,我有一系列的口袋妖怪。 口袋妖怪有一个抽象的方法vitesse(法语中vitesse=speed),它根据口袋妖怪的类型而变化 我还有一个类TabPokemon,它生成我的pokemons数组。 在这门课上,我想计算最快的口袋妖怪 这是我的方法: public Pokemon plusRapide() { Pokemon winner; double vitesse = 0.0; foreach(Pokemon p in tab) { if(p.v

我有一系列的口袋妖怪。 口袋妖怪有一个抽象的方法vitesse(法语中vitesse=speed),它根据口袋妖怪的类型而变化

我还有一个类TabPokemon,它生成我的pokemons数组。 在这门课上,我想计算最快的口袋妖怪

这是我的方法:

public Pokemon plusRapide()
{
    Pokemon winner;
    double vitesse = 0.0;
    foreach(Pokemon p in tab)
    {
        if(p.vitesse()> vitesse)
        {
            vitesse = p.vitesse();
            winner = p;
        }

    }
    return winner;
}
它在return语句中显示了一个错误,因为它是在本地分配的。
如何返回速度值最大的对象口袋妖怪?

通过
pokemonwinner=null初始化口袋妖怪对象
在方法的第一行。

通过
pokemonwinner=null初始化Pokemon对象

如果
tab
为空,或者
vitesse
值对于所有元素都为负值,您希望返回什么?如果您想返回
null
,那么首先将
winner
指定为null。与问题本身无关,我建议您尽早开始遵循.NET命名约定。这可以通过在一行代码中使用linq来完成-
return tab.OrderBy(p=>p.vitesse()).FirstOrDefault()
@ZoharPeled:或者不使用MoreLINQ的
MaxBy
进行排序。您已经回答了这个问题@JonSkeet:)那么,如果
tab
为空,或者如果所有元素的
vitesse
值均为负值,您希望返回什么?如果您想返回
null
,那么首先将
winner
指定为null。与问题本身无关,我建议您尽早开始遵循.NET命名约定。这可以通过在一行代码中使用linq来完成-
return tab.OrderBy(p=>p.vitesse()).FirstOrDefault()
@ZoharPeled:或者不使用MoreLINQ的
MaxBy
进行排序。您已经回答了这个问题@JonSkeet:)