2013-11-18 4 views
-1

Я довольно новичок в C#, и я только что узнал о создании пользовательских классов. Проблема в том, что я не могу понять, как взять экземпляры этого класса и добавить их в список/массив (в зависимости от того, что мне нужно), где я могу найти и выбрать один на основе атрибута определенных в нем.Создание списка/массива экземпляров класса?

Вот класс, я создал прямо сейчас:

public class Team 
{ 
    protected int teamNum; 
    protected double averageMatchPoints; 
    protected string location; 
    protected int matchesPlayed; 
    protected int matchesPending; 
    protected int blowouts; 

    //Team Number 
    public void SetNumber(int num) 
    { 
     teamNum = num; 
    } 

    public int GetNumber() 
    { 
     return teamNum; 
    } 

    //Average Points per match 
    public void AverageMatchPoints(double p) 
    { 
     averageMatchPoints = p; 
    } 

    public double GetAverageMatchPoints() 
    { 
     return averageMatchPoints; 
    } 

    //location information 
    public void SetLocation(string l) 
    { 
     location = l; 
    } 

    public string GetLocation() 
    { 
     return location; 
    } 

    //Number of Played Matches 
    public void PlayedMatches(int mat) 
    { 
     matchesPlayed = mat; 
    } 

    public int GetPlayedMatches() 
    { 
     return matchesPlayed; 
    } 

    //Number of matches pending (not played) 
    public void PendingMatches(int pen) 
    { 
     matchesPending = pen; 
    } 

    public int GetPendingMatches() 
    { 
     return matchesPending; 
    } 

    //Number of Blowouts (matches where the robot was disbaled for any number of reasons) 
    public void SetBlowouts(int b) 
    { 
     blowouts = b; 
    } 

    public int GetBlowouts() 
    { 
     return blowouts; 
    } 
} 

Теперь, если бы я имел 40 ~ 65 этих команд, конкурирующих на мероприятии, и я сделал экземпляр этого класса для каждого из них, то как я бы заполнил поле со списком с каждым номером (teamNum), а затем найдите одну конкретную команду из всех экземпляров программы по номерам их ?

+0

Используете ли вы Windows Forms? Кроме того, когда вы добавляете команды в combobox, пытаетесь ли вы найти элементы через выбор пользователя или хотите найти элемент через код? Что появится в комбо, кроме номера команды? – NoChance

ответ

1

Я рекомендую словарь!

// Declared somewhere 
private Dictionary<int, Team> _teamDictionary = new Dictionary<int, Team>(); 
. 
. 
. 
//Initialization code - I assume you have gotten your teams from a database or somewhere? 
foreach (var team in myTeamsList) 
{ 
    _teamDictionary.Add(team.teamNum, team); 
} 
. 
. 
. 
// Later when you want to locate a team: 
var team = _teamDictionary[selectedTeamNum]; 
0
List<Team> allTheTeams = new List<Team>(); 

for(var i = 0; i < 65; i++){ 
    allTheTeams.Add(new Team { teamNum = i }); 
} 

А чтобы получить команду с номером 34:

allTheTeams.FirstOrDefault(x => x.teamNum == 34); 
1

Вы пробовали создать список еще?

List<Team> Teams { get; set; } 

Вы можете связать свой выпадающий к списку/коллекции/IEnumerable всех команд, которые у вас есть. Для инициализации команд до 40/60 выполните следующие действия?

for(int i = 0; i < 60; i++) 
{ 
Team t = new Team(); 
t.Name = "Team 1"; 
t.TeamNumber = i + 1; 
Teams.Add(t); 
} 
0

Как это:

Добавьте конструктор в классе, который принимает teamnumber:.

(это лучшее решение, если каждая команда должна иметь номер Таким образом, вы не можете забыть установить номер команды, как вы не можете создать объект типа команды без установки числа в конструкторе)

public class Team 
{ 
    protected int _teamNum; 
    public Team(int teamNum) 
    { 
     _teamNum = teamNum; 
    } 

    public int getTeamNum() 
    { 
     return _teamNum; 
    } 

     //more logic 
    } 

Заполните dictionary, comboBox и получите команду от своего имени:

Dictionary<int, Team> dictionary = new Dictionary<int, Team>(); 

    int teamNum = 1; 
    // Add your Teams to a dictionary (example) 
    dictionary.Add(teamNum ,new Team(teamNum++)); 
    dictionary.Add(teamNum, new Team(teamNum++)); 
    dictionary.Add(teamNum, new Team(teamNum++)); 

    // Populate a comboBox 
    foreach(KeyValuePair<int,Team> kvp in dictionary) 
    { 
     comboBox1.Items.Add(kvp.Value.getTeamNum().ToString()); 
    } 

    // get a team for a given teamNumer 
    int targetTeamNumber = 2; 
    if (dictionary.ContainsKey(targetTeamNumber)) 
    { 
     Team team = dictionary[targetTeamNumber]; 
     // do something with the team 
    } 
Смежные вопросы