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

时间:2016-06-01 05:11:12

标签: list c3.js

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

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可以定义为&#34; BaseballPlayers&#34;或者&#34; HockeyPlayers&#34;。

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

谢谢!

2 个答案:

答案 0 :(得分:1)

嗯,如果内联就足够了。

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

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);

答案 1 :(得分:0)

理想的情况是使用继承。由于HockeyPlayerBaseballPlayer都是Player并且具有一些常见属性,因此最好创建基类并在其中放置公共属性。

之后打印功能会更容易:

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);