C# 使用变量在两个列表之间切换

C# Using Variable To Switch Between Two Lists

这可能是个愚蠢的问题,但这是我的场景:我有两个列表,一个包含曲棍球运动员对象,另一个包含棒球运动员对象。

public static List<BaseballPlayer> Baseball List = new List<BaseballPlayer>();
public static List<HockeyPlayer> Hockey List = new List<HockeyPlayer>();

如果按下按钮,我有一个屏幕会在玩家对象上绘制更多细节(下面是绘制数百条线的示例):

GUI.Label(new Rect(x, y, 130, 32),Lists.BaseballPlayer[i].accessPlayerName);

但是,有没有办法动态控制使用哪个列表名称。所以像:

string one;

然后让绘制调用执行如下操作:

GUI.Label(new Rect(x, y, 130, 32),Lists.one[i].accessPlayerName);

其中字符串 1 可以定义为 "BaseballPlayers" 或 "HockeyPlayers"。

我不想复制两个屏幕,一个显示 BaseballPlayer 列表,另一个显示 HockeyPlayer 列表。如果有一种方法可以动态插入列表名称,那就太好了。

谢谢!

好吧,一个简单的 if 内联就足够了。

假设您使用布尔值来确定使用哪个列表:

bool useHockey = true; //control this variable anyway you like, a property, a function, anything you want

然后你可以这样做:

GUI.Label(new Rect(x, y, 130, 32), (useHockey ? Lists.Hockey : Lists.Baseball)[i].accessPlayerName);

理想情况是使用继承。由于 HockeyPlayerBaseballPlayer 都是 Player 的一些共同属性,因此最好创建一个基础 class 并将共同属性放在那里。

之后打印功能就简单多了:

public class Player
{
    public string Name { get; set; }
}

public class BaseballPlayer : Player
{
    //Properties specific to baseball player
}

public class HockeyPlayer : Player
{
    //Properties specific to hockey player
}

public void PrintPlayers(List<Player> playerList)
{
    for(int i = 0; i < playerList.Count; i++)
    {
        GUI.Label(new Rect(x, y, 130, 32),playerList[i].Name);
    }
}

PrintPlayer(Lists.BaseballPlayers);
PrintPlayer(Lists.HockeyPlayers);