C# 如何在没有类实例的情况下访问类中的列表?
我正在用c#制作一个网球课程,准备考试,我需要阅读一份球员档案。我可以使用此代码将玩家读入列表。现在我需要访问另一个职业的男性玩家列表,从列表中获得两名玩家并进行一场比赛,但我不知道如何访问它C# 如何在没有类实例的情况下访问类中的列表?,c#,C#,我正在用c#制作一个网球课程,准备考试,我需要阅读一份球员档案。我可以使用此代码将玩家读入列表。现在我需要访问另一个职业的男性玩家列表,从列表中获得两名玩家并进行一场比赛,但我不知道如何访问它 public class MaleReader { private List<Player> MalePlayers = new List<Player>(); public string FileName { get; set; } public stri
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);
}
}
公共类读取器
{
私人列表玩家=新列表();
公共字符串文件名{get;set;}
公共字符串分隔符{get;set;}
公共MaleReader(字符串fn,字符串delim=“|”))
{
文件名=fn;
分隔符=delim;
}
公共重写字符串ToString()
{
var rv=“”;
foreach(男性玩家的var p)
rv+=“玩家:”+p+“\n”;
返回rv;
}
公共空荷载()
{
TabeFieldPalsPAR=新文本字段分析器(文件名);
Pr.TeXFieldType = FieldType。
PAR.SEDDELIMIDES(定界符);
而(.PA.EndoFDATA)
{
String []字段= PAR.RealFieldSd();
int MID=Int32.Parse(字段[0]);
字符串Firstname=字段[1];
字符串名称=字段[2];
字符串LastName=字段[3];
DateTime DoB=DateTime.Parse(字段[4]);
字符串国家=字段[5];
字符串ShortCountry=字段[6];
//性别=
var p=新玩家(MID,Enums.Gender.Male,Firstname,MiddleName,LastName,DoB,Country,ShortCountry);
添加(p);
}
PAR.闭包();
}
公共静态无效RunPlayerReaderMale()
{
var f=新的MaleReader(@“C:\Users\R0ede\Dropbox\Git\Examprogram\Data\FemalePlayer.txt”);
f、 加载();
//控制台写入线(f);
}
}
不创建类的实例是否可以执行此操作?您只能通过以下方式执行:
公共静态列表MalePlayers=new List()代码>
但是你需要了解你在这里做什么,把这个列表列成静态的,这意味着你的类的所有实例都将共享同一个列表,你有几种方法可以做到这一点,其中大多数只是一种风格选择
一个选项是创建一个静态方法,该方法在内部创建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;
}
public静态列表RunPlayerReaderMale()
{
var f=新的MaleReader(@“C:\Users\R0ede\Dropbox\Git\Examprogram\Data\MalePlayer.txt”);
f、 加载();
返回f.MalePlayers;
}
我想知道你为什么没有一个类MaleReader
的实例?我想您必须创建它才能从文件中加载播放器
我会保留您用来读取文件的实例,或者,如果您不想保留它,请在删除该实例之前提取列表
或者你也可以像其他人提到的那样使用静态aproach。不,如果你没有该类的实例,列表中的男性玩家
就没有了exist@R0ede基于您当前的上下文。我将使用下面的Rubens Farias方法,使RunPlayerReaderMale()
方法返回List
。如何提取列表?好吧,公开列表,或者创建一个getter。调用MaleReader.Load()
后,只需将列表分配给需要的任何变量即可。你想让我举个例子吗?