2016-07-19 1 views
0

나는 목록을 다루는 응용 프로그램을 만들고 있습니다. 두 개의 스크립트가 있습니다. 하나는 특정 클래스를 다룬다. 응용 프로그램의 다른 모든 것을 처리하는 두 번째 응용 프로그램입니다. 온라인 튜토리얼을 통해 배우는 True & False 게임/앱입니다.목록의 "질문"목록 <Questions>은 목록 <T>의 "T"와 관련이 있습니까?

첫 번째 스크립트는 문자열과 bool을 포함하는 [System.Serializable] 스크립트입니다. 여기서 문자열은 질문이고 bool은 질문을 검증합니다. 메인 게임 컨트롤러 스크립트는 클래스에서 배열을 구성하고 질문에 대한 질문을 받으면 정기적으로 업데이트되는 답변되지 않은 질문 목록을 포함합니다.

내가 확실히하지 않는 코드의 라인은 "질문은"질문과 부울을 포함하는 클래스입니다

private static List<Questions> UnansweredQuestions; 

이다.

<Questions>의 기능은 정확히 무엇입니까? 나는 List<T>에있는 T가 목록에있는 요소의 유형을 참조한다는 것을 알고 있습니다. 일반적으로 문자열 또는 int입니다. 여기서 T는 클래스로 정의됩니까? Questions 클래스에는 문자열과 부울이 포함되어 있으므로 작성한 목록이 사전이라는 의미입니까?

+0

나는 당신이 의미하는 바를 확실히 얻을 수 있는지 확신 할 수 없지만, 목록은 커스텀 클래스 (예 : Questions)를 포함한 어떤 것의 목록 ​​일 수도있다. 자, 목록은 단순히 가방입니다. 그 가방에는 공, 동전 또는 그 밖의 다른 항목이 들어있는 다른 작은 가방도 있습니다. –

+0

@Ghasan'System.Collections.Concurrent.ConcurrentBag '과 혼동하지 말것 (비록 유사 함에도 불구하고) –

+0

@PCLuddite 고마워! 나는 그것의 개념을 언급하고 있었지만 그와 같은 이름을 가진 수업이 있다는 것을 알기가 좋다. :) –

답변

1

의 아래 액세스 수정 privateUnansweredQuestions은이에 정의 된 클래스의 범위 내에서 볼 수 있다는 것을 의미

private static List<Questions> UnansweredQuestions; 

이 휴식 보자.

키워드 static 당신이하지 않는 것을 의미한다 수업의 실례가 필요합니다. UnansweredQuestions은 클래스의 모든 인스턴스와 클래스의 다른 정적 속성/메소드에서 볼 수 있습니다.

정확히 어떤 기능을 제공합니까? 목록의 T는 목록의 요소 유형을 나타냅니다. 일반적으로 문자열 또는 int입니다.

List<T>은 나중에 명명 될 유형 목록을 의미합니다. List<Questions>을 작성할 때 해당 유형의 이름을 지정하십시오. 컴파일러에게 질문 객체 목록을 원한다.

질문 클래스에는 문자열과 부울이 포함되어있어 작성된 목록이 사전이라는 것을 의미합니까?

아니요, 실제로 목록입니다. 이 목록에 적어도 하나 개의 오브젝트가있는 경우, 당신이 당신의 부울 답변라고 가정하고 질문 텍스트가 텍스트라고

Questions firstQuestion = UnansweredQuestions[0]; 
if (firstQuestion.Answered == false) 
{ 
    Console.WriteLine(firstQuestion.Text); 
} 

처럼 뭔가를 할 수 있습니다.

+0

나는이 사이트를 이미 사랑하고있다 :) 아직도 실제로 얼마나 도움이되는지 믿고있다. 문자열과 int (두 args를 기반으로)를 정의하고 그 목록으로 채워진 생성자가 있다면 목록의 요소로 생성자를 받아 들일 것입니다. – BowieSalvatore

+0

@BowieSalvatore 만약 "Accept constructors"가 "UnanswerQuestions.Add (새로운 질문 (How are?), 3));'와 같은 것을 의미한다면, 그러면 yes입니다. –

+0

2 개의 인수 생성자가 없어도 다음과 같은 구문을 사용할 수 있습니다 :'UnansweredQuestions.Add (New Question() {Text = "How are you?", Answered = false}); –

2

아니요, List<Question>은 사전이 아닙니다. 에 Question이 포함되어 있습니다.

List<T>은 모든 유형을 수용 할 수 있음을 의미합니다. 컴파일러는 기본적으로 List에서 코드를 가져와 Question 유형의 목록으로 작성된 것처럼 T의 모든 인스턴스를 Question으로 바꿉니다.

핵심 부분에서 List<T>은 배열에 요소를 private T[] _items으로 저장합니다. 이 배열은 공간이 부족할 때마다 크기가 조정됩니다.

1

참조 : 여러 T의로의 https://msdn.microsoft.com/en-us/library/6sh2ey19(v=vs.110).aspx

생각합니다. Array<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]; 
0

<T>objectList<System.Object>처럼 모든 것의 기본이입니다 T는 어떤 유형이 될 수 있습니다. List<string>을 선언하면 System.String 클래스를 사용하여 목록이 만들어집니다.

이 코드는 private static List<Questions> UnansweredQuestions;이며 Question 클래스를 사용하여 목록을 만듭니다.

그래서이 코드 :

private static List<Question> UnansweredQuestions = new List<Question>(10); 

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(); 

플러스 List 's 및 Array :이 같은 것을 사용하지 않아도

private static Question[] UnansweredQuestions = new Question[10]; 
's 및 Array '

List이들, 공간과 시간을 절약 : 어느 Array 같다 님의 색인 생성을 허용하므로 MyListOrArray[4]과 같은 항목을 가져올 수 있습니다. 해당 색인에서 항목을 반환합니다. 10 개의 변수가있는 위의 예제에서, UnansweredQuestion4과 같이 개별적으로 값을 가져와야합니다.

관련 문제