我正在开发一个处理列表的应用程序。我有两个脚本;一个处理特定类;第二个处理应用程序中的其他所有内容。这是一个真与假的游戏/应用程序,我正在学习通过在线教程来制作它。
第一个脚本是一个System.Serializable脚本,它只包含一个字符串和一个布尔值。这里的字符串是问题,布尔值验证问题。游戏控制器的主脚本在类之外创建了一个数组,它还包含一个未回答问题的列表,该列表将在问题被提出后定期更新。
我不太理解的代码行是
private static List<Questions> UnansweredQuestions;其中“问题”是包含问题和布尔值的类。
<Questions>到底提供了什么功能。我知道List<T>中的T指的是列表中元素的类型;通常是字符串或整型。在这里,T作为类是如何定义的?假设问题类包含一个字符串和一个布尔值,这是否意味着创建的列表是一个字典?
发布于 2016-07-19 11:32:16
不,List<Question>不是字典。它是包含Question%s的List。
List<T>是泛型,这意味着它可以接受任何类型。编译器本质上从List获取代码,并用Question替换T的所有实例,就好像它是专门作为Question类型的列表编写的一样。
在其核心,List将元素存储在一个数组中,即private T[] _items。当数组空间不足时,就会调整数组的大小。
发布于 2016-07-19 11:30:56
让我们把这个分解一下
private static List<Questions> UnansweredQuestions;访问修饰符private意味着UnansweredQuestions只能在定义它的类的范围内可见。
关键字static意味着您不需要类的实例。相同的UnansweredQuestions对类的所有实例以及类中的其他静态属性/方法都是可见的。
服务的确切功能是什么。我知道列表中的T指的是列表中元素的类型;通常是string或int。
List<T>表示稍后命名的类型列表。当您编写List<Questions>时,您可以命名该类型。你告诉编译器你想要一个问题对象的列表。
假设问题类包含一个字符串和一个布尔值,这是否意味着创建的列表是一个字典?
不,它真的是一个列表。如果列表中至少有一个对象,则可以执行以下操作
Questions firstQuestion = UnansweredQuestions[0];
if (firstQuestion.Answered == false)
{
Console.WriteLine(firstQuestion.Text);
}这里假设您的布尔值被称为已回答,您的问题文本被称为文本。
发布于 2016-07-19 11:37:35
参考:https://msdn.microsoft.com/en-us/library/6sh2ey19(v=vs.110).aspx
可以把它想象成多个T,类似于Array<T>。T可以是任何类型: int、字符串、问题类等。例如:
Question question1 = new Question(); // only 1 question
List<Question> questions = new List<Question>(2);
questions.Add(new Question()); // 1st question added
questions.Add(new Question()); // 2nd question added
// access the second question by:
Question secondQuestion = questions[1];https://stackoverflow.com/questions/38449086
复制相似问题