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