код, который я смотрю на это следующим образомC# объекты в списке перезаписи друг друга
string data;
string[] tokens;
while (sr.EndOfStream != true)
{
data = sr.ReadLine();
char delim = ',';
tokens = data.Split(delim);
Team t = new Team(tokens[0], int.Parse(tokens[1]), int.Parse(tokens[2]));
TeamList.Add(t);
}
//Test to make sure the teams were stored properly
foreach(Team t in TeamList)
{
Console.WriteLine(t.Name);
}
sr.Close();
Когда я использую цикл Еогеасп писать названия команд из отображаются 9 копий Team9 (Составы команд перечислены 1-9 в текстовом файле по строкам, с двумя номерами, разделенными запятыми, чтобы удерживать выигрыши и потери для каждой команды, из-за чего есть делимы запятыми). Это касается любого количества команд, которые я добавляю, если я добавлю 10-ю команду, она сделает 10 копий команды10, и если я использую 8 команд, она отобразит 8 экземпляров Team8. Я добавил цикл foreach в цикл while, чтобы он показывал команды на каждом этапе и он переписывал все предыдущие объекты при создании нового, так, например, при первом запуске цикла он показывает Team1, затем в следующий раз он запускает цикл, он показывает две строки Team2 и так далее. Из моих исследований я увидел, что это обычно вызвано не объявлением нового объекта внутри цикла, но в этом случае новый объект объявляется внутри цикла.
Edit: класс команды выглядит следующим образом
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ConsoleApplication2
{
class Team
{
private static string tn;
private static int Wins, Losses;
public Team()
{
}
public Team(string name, int wins, int losses)
{
tn = name;
Wins = wins;
Losses = losses;
}
public override string ToString()
{
return tn + ", wins: " + Wins + ", losses: " + Losses;
}
public string Name
{
get { return tn; }
}
}
}
Переменная TeamList и основным классом являются
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ConsoleApplication2
{
class Program
{
private static Random pick = new Random();
private static List<Team> TeamList = new List<Team>();
static void Main(string[] args)
{
//Reading file io
Schedule(TeamList);
Console.ReadLine();
}
static void Schedule(List<Team> TeamList)
{
StreamReader sr = new StreamReader("C:/Users/andre/Desktop/VisualStudioProjects/ConsoleApplication1/ConsoleApplication1/TeamList.txt");
string data;
string[] tokens;
while (sr.EndOfStream != true)
{
data = sr.ReadLine();
char delim = ',';
tokens = data.Split(delim);
Team t = new Team(tokens[0], int.Parse(tokens[1]), int.Parse(tokens[2]));
TeamList.Add(t);
foreach(Team x in TeamList)
{
Console.WriteLine(x.Name);
}
}
//Test to make sure the teams were stored properly
foreach(Team t in TeamList)
{
Console.WriteLine(t.Name);
}
sr.Close();
}
Текстовый файл просто файл, который содержит следующую
Team1,0,0
Team2,0,0
Team3,0,0
Team4,0,0
Team5,0,0
Team6,0,0
Team7,0,0
Team8,0,0
Team9,0,0
Как определяется команда? Что такое TeamList? – Ishamael
Поскольку 't' - локальная переменная, которая создается каждый раз, не должно быть никаких проблем. Покажите свою реализацию 'Team' и' TeamList'. –
TeamList - глобальная переменная, объявленная как private static. Список TeamList = новый Список () ;. Класс Team определяется как public Team (имя строки, int wins, int loss). Я считаю, что это должны быть ответы на ваши вопросы. Скажите, пожалуйста, если вам нужно что-нибудь еще, я все еще довольно новичок в программировании. –
Prolixitas