C# “如何”;“问题”;在列表中<;问题>;与「;";在列表中<;T>;?

C# “如何”;“问题”;在列表中<;问题>;与「;";在列表中<;T>;?,c#,generics,C#,Generics,我正在开发一个处理列表的应用程序。我有两个剧本;处理特定类别的人;第二个是处理应用程序中的所有其他内容。这是一个真实和错误的游戏/应用程序,我正在通过在线教程学习制作 第一个脚本是只包含字符串和bool的[System.Serializable]脚本。这里的字符串是问题,bool验证问题。主游戏控制器脚本从类中生成一个数组,它还包含一个未回答问题的列表,一旦问题被提出,这些问题将定期更新 我不太明白的一行代码是 private static List<Questions> Unans

我正在开发一个处理列表的应用程序。我有两个剧本;处理特定类别的人;第二个是处理应用程序中的所有其他内容。这是一个真实和错误的游戏/应用程序,我正在通过在线教程学习制作

第一个脚本是只包含字符串和bool的[System.Serializable]脚本。这里的字符串是问题,bool验证问题。主游戏控制器脚本从类中生成一个数组,它还包含一个未回答问题的列表,一旦问题被提出,这些问题将定期更新

我不太明白的一行代码是

private static List<Questions> UnansweredQuestions;
私有静态列表未回答的问题;
其中“问题”是包含问题和bool的类

的具体功能是什么。我知道
列表中的T是指列表中元素的类型;通常是字符串或int。T作为一个类是如何定义的?假设课堂问题包含一个字符串和一个布尔值,这是否意味着创建的列表是一个字典?

让我们来分解一下

private static List<Questions> UnansweredQuestions;
这假设您的布尔值被称为已回答,而您的问题文本被称为文本。

private static List<Questions> UnansweredQuestions;
这假设您的布尔值被称为已回答,而您的问题文本被称为文本。

否,
List
不是字典。这是一个
列表
,包含
问题
s

List
作为泛型意味着它可以接受任何类型。编译器基本上从
列表
中获取代码,并将
T
的所有实例替换为
Question
,就像它是专门为
Question
类型编写的列表一样

其核心是将元素存储在一个数组中,作为
private T[]\u items
。然后,每当该数组空间不足时,就会调整其大小。

否,
List
不是字典。这是一个
列表
,包含
问题
s

List
作为泛型意味着它可以接受任何类型。编译器基本上从
列表
中获取代码,并将
T
的所有实例替换为
Question
,就像它是专门为
Question
类型编写的列表一样

其核心是将元素存储在一个数组中,作为
private T[]\u items
。然后,每当该数组空间不足时,就会调整其大小。

参考:

把它想象成多个T。类似于
数组
。T可以是任何类型:int、string、疑问类等,例如:

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];
Question question1=新问题();//只有一个问题
列表问题=新列表(2);
问题。添加(新问题());//补充第1项问题
问题。添加(新问题());//补充第二项问题
//通过以下方式访问第二个问题:
第二个问题=问题[1];
参考:

把它想象成多个T。类似于
数组
。T可以是任何类型:int、string、疑问类等,例如:

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];
Question question1=新问题();//只有一个问题
列表问题=新列表(2);
问题。添加(新问题());//补充第1项问题
问题。添加(新问题());//补充第二项问题
//通过以下方式访问第二个问题:
第二个问题=问题[1];
这个
是一个
对象
,它是一切的基础,就像这个
列表
。当您声明
List
时,它使用类
System.String
创建一个列表

此代码:
私有静态列表未回答的问题
,使用
问题
类创建一个列表

所以这个代码:

private static List<Question> UnansweredQuestions = new List<Question>(10);
列表
数组
节省了空间和时间,因此您不必使用以下内容:

private static Question UnansweredQuestion1 = new Question();
private static Question UnansweredQuestion2 = new Question();
private static Question UnansweredQuestion3 = new Question();
private static Question UnansweredQuestion4 = new Question();
private static Question UnansweredQuestion5 = new Question();
private static Question UnansweredQuestion6 = new Question();
private static Question UnansweredQuestion7 = new Question();
private static Question UnansweredQuestion8 = new Question();
private static Question UnansweredQuestion9 = new Question();
private static Question UnansweredQuestion10 = new Question();
加上
列表
数组
允许建立索引,因此您可以获得类似于
MyListOrArray[4]
的项目。它将返回该索引处的项。而在上面的示例中,有10个变量,您必须分别获取它们的值,如
未回答的问题4

是一个
对象
,它是一切的基础,类似于
列表
。当您声明
List
时,它使用类
System.String
创建一个列表

此代码:
私有静态列表未回答的问题
,使用
问题
类创建一个列表

所以这个代码:

private static List<Question> UnansweredQuestions = new List<Question>(10);
列表
数组
节省了空间和时间,因此您不必使用以下内容:

private static Question UnansweredQuestion1 = new Question();
private static Question UnansweredQuestion2 = new Question();
private static Question UnansweredQuestion3 = new Question();
private static Question UnansweredQuestion4 = new Question();
private static Question UnansweredQuestion5 = new Question();
private static Question UnansweredQuestion6 = new Question();
private static Question UnansweredQuestion7 = new Question();
private static Question UnansweredQuestion8 = new Question();
private static Question UnansweredQuestion9 = new Question();
private static Question UnansweredQuestion10 = new Question();

加上
列表
数组
允许建立索引,因此您可以获得类似于
MyListOrArray[4]
的项目。它将返回该索引处的项。然而,在上面的例子中,有10个变量,您必须单独获取它们的值,如
未回答的问题4

我不确定我是否完全理解您的意思,但列表可以是包括自定义类(例如问题)在内的任何内容的列表。现在,列表只是一个袋子,在这个袋子里你可以有球、硬币,甚至是其他更小的袋子,里面装着其他物品。@Ghasan不要与
System.Collections.Concurrent.ConcurrentBag
(尽管它们很相似)@PCLuddite谢谢!我指的是它的概念,但很高兴知道有这样一个名字的类:)我不确定我是否完全理解你的意思,但列表可以是任何内容的列表,包括自定义类(例如问题)。现在,列表只是一个袋子,在这个袋子里你可以有球、硬币,甚至是其他更小的袋子,里面装着其他物品。@Ghasan不要与
System.Collections.Concurrent.ConcurrentBag
(尽管它们很相似)@PCLuddite谢谢!我指的是它的概念,但很高兴