2016-09-29 4 views
-2

제네릭을 배웁니다. Richter LinkedList. 클래스 초기화에 관한 질문이 있습니다. 올린 날짜 : 2 생성자가 있습니다. 처음에는 null입니다. 우리는 하나의 생성자로 어떻게 할 수 있습니까?일반 매개 변수 리히터 코드

internal sealed class Node<T> 
{ 
    public T m_data; 
    public Node<T> m_next; 

    public Node(T data) : this(data, null) 
    { 
    } 

    public Node(T data, Node<T> next) 
    { 
     m_data = data; m_next = next; 
    } 

    public override String ToString() 
    { 
     return m_data.ToString() + ((m_next != null) ? m_next.ToString() : String.Empty); 
    } 
} 

무엇입니까?

public Node(T data) : this(data, null) 
{ 
} 

특히

내가 할 수있는 이유 (T data)?

public Node(T data, Node<T> next) 
     { 
      m_data = data; m_next = null; 
     } 

그러나 나는 LinkedList의에서 냈다 예입니다

public Node(T data, Node<T> next) 
     { 
      m_data = null; m_next = next; 
     } 
+1

를 살펴 보자. 예를 들어, 노드 유형은 생성자에서'string'을 사용합니다. – Igor

+1

Node 클래스의 생성자는'data'라는 이름의 매개 변수를 취합니다. T –

+0

두 개의 생성자가 있습니다. 처음에는 null입니다. 1 명의 생성자로 어떻게 할 수 있습니까? – ifooi

답변

1

우리가 하나 하나의 생성자와 함께 할 수 있습니까?

당신은

var node1 = new Node<string>("hello world"); //the same as (data, null) 
var node2 = new Node<string>("how are you", node1); 

public Node(T data) : this(data, null)은 무엇인가 등의 사용을 허용 할 생성자

internal sealed class Node<T> { 
    public T m_data; 
    public Node<T> m_next; 

    public Node(T data, Node<T> next = null) { 
     m_data = data; 
     m_next = next; 
    } 

    public override String ToString() { 
     return m_data.ToString() + ((m_next != null) ? m_next.ToString() : String.Empty); 
    } 
} 

에서 선택적 매개 변수를 사용할 수 있습니까?

호출자 생성자 체인/과부하.

는 생성자가 일반 제약`T`의 인스턴스를 취 C# constructor chaining? (How to do it?)

1

할 수 없습니다.

T은 해당 유형에 대한 자리 표시 자입니다. 따라서 Node<int>을 사용하면 유형을 정수로 설정합니다. 이는 일반 사항입니다. data은 생성자 내의 변수 이름입니다.

Node<int> foo = new Node<int>(1); 의 사용은이 생성자가 당신

에 익숙 할 수있는 List<int> foo = new List<int>();과 동일합니다. 처음에는 null입니다. 우리는 어떻게 하나의 생성자로 그것을 할 수 있습니까?

이 모두를 대체하기 위해이 같은 기본 값을 needet 또는 설정되지 않은 경우 당신은 하나를 제거 할 수 있습니다

public Node(T data, Node<T> next = null) 
{ 
    m_data = data; m_next = next; 
} 
+0

생성자가 2 개 있습니다. 처음에는 null입니다. 1 명의 생성자로 어떻게 할 수 있습니까? – ifooi

+1

@ifooi가 내 대답을 업데이트했습니다. LinkedList에 관심이 있으시면 최근에 http://codereview.stackexchange.com/questions/138142/linked-list-in-c를 구현했습니다. – fubo