我正在用c#制作网球课程进行考试,我需要和玩家一起阅读文件。我可以使用此代码将玩家读入列表。现在我需要从另一个类中获取MalePlayers列表以从列表中获得两名玩家并进行比赛,但我无法弄清楚如何进行比赛。
public class MaleReader
{
private List<Player> MalePlayers = new List<Player>();
public string FileName { get; set; }
public string Delimiter { get; set; }
public MaleReader(string fn, string delim = "|")
{
FileName = fn;
Delimiter = delim;
}
public override string ToString()
{
var rv = "";
foreach (var p in MalePlayers)
rv += "Player: " + p + "\n";
return rv;
}
public void Load()
{
TextFieldParser par = new TextFieldParser(FileName);
par.TextFieldType = FieldType.Delimited;
par.SetDelimiters(Delimiter);
while (!par.EndOfData)
{
string[] fields = par.ReadFields();
int MID = Int32.Parse(fields[0]);
string Firstname = fields[1];
string MiddleName = fields[2];
string LastName = fields[3];
DateTime DoB = DateTime.Parse(fields[4]);
string Country = fields[5];
string ShortCountry = fields[6];
//Gender gender =
var p = new Player(MID, Enums.Gender.Male, Firstname, MiddleName, LastName, DoB, Country, ShortCountry);
MalePlayers.Add(p);
}
par.Close();
}
public static void RunPlayerReaderMale()
{
var f = new MaleReader(@"C:\Users\R0ede\Dropbox\Git\Examprogram\Data\FemalePlayer.txt");
f.Load();
//Console.WriteLine(f);
}
}
是否可以不创建类的实例?
答案 0 :(得分:2)
你有几种方法可以做到这一点,而且大多数只是一种风格选择。
一个选项是创建一个静态方法,在内部创建MaleReader
实例,但它只返回其MalePlayers
属性。
public static List<Player> RunPlayerReaderMale()
{
var f = new MaleReader(@"C:\Users\R0ede\Dropbox\Git\Examprogram\Data\MalePlayer.txt");
f.Load();
return f.MalePlayers;
}
答案 1 :(得分:0)
你只能这样做:public static List<Player> MalePlayers = new List<Player>();
但是你需要了解你在这里做了什么,使这个列表static
意味着你班级的所有实例将共享相同的列表。
答案 2 :(得分:0)
我想知道为什么你没有班级MaleReader
的实例?我假设您必须创建它以从文件加载播放器。
我会保留您用来读取文件的实例,或者,如果您不想保留它,请在删除实例之前提取List
。
或者你可以像其他人提到的那样采取静态方法。