2009-11-13 2 views
58
  1. default 키워드는 C#에서 무엇을 사용합니까?
  2. C# 3.0에서 소개 되었습니까?
+0

http://stackoverflow.com/questions/367378/returning-a-default-value-c –

+0

[참조하십시오!] (http://msdn.microsoft.com/en-us/library/vstudio/83fhsxwc .aspx) – MasterMastic

+0

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/default –

답변

79

default 키워드는 여러 용도로 사용되기 때문에 상황에 맞는 키워드입니다. 유형의 기본값을 반환하는 새로운 C# 2 의미를 언급하고 있다고 생각합니다. 참조 유형의 경우 이것은 null이고 값 유형의 경우이 새로운 인스턴스는 모두 0이됩니다.

여기에 무슨 뜻인지 보여주기 위해 몇 가지 예입니다 :

using System; 

class Example 
{ 
    static void Main() 
    { 
     Console.WriteLine(default(Int32)); // Prints "0" 
     Console.WriteLine(default(Boolean)); // Prints "False" 
     Console.WriteLine(default(String)); // Prints nothing (because it is null) 
    } 
} 
70

기본값을 사용하여 Generic Type의 기본값을 얻을 수도 있습니다.

public T Foo<T>() 
{ 
    . 
    . 
    . 
    return default(T); 
} 
+21

+1; IMO 이것은 가장 일반적인 사용법입니다 ... –

30

가장 일반적인 사용은 with generics이다; 은 "일반"유형 (예 : default(string) 등) 인 경우으로 작동하지만 이는 손으로 직접 작성하는 코드에서는 매우 드뭅니다.

코드 생성을 할 때이 방법을 사용합니다. 즉, 다른 모든 기본값을 하드 코딩 할 필요가 없습니다. 형식을 알아 내고 생성 된 코드에 default(TypeName)을 사용할 수 있습니다. 제네릭에

은 고전적인 사용은 TryGetValue 패턴 :

여기
public static bool TryGetValue(string key, out T value) { 
    if(canFindIt) { 
     value = ...; 
     return true; 
    } 
    value = default(T); 
    return false; 
} 

우리가 방법을 종료 값을 지정이 하지만 발신자가 정말 무엇인지 신경 안된다. (떨어져 스위치의 경우에서)

public static T CreateAndInit<T>() where T : ISomeInterface, new() { 
    T t = new T(); 
    t.SomeMethodOnInterface(); 
    return t; 
} 
+0

+1 on where T : new()와 default (T). 나는 T : new()가 generic 클래스의 전체 생성자를 호출하는 곳에서 더 선호한다. 그러나 default (T)는 new() 제약 조건을 만족할 수 없을 때 매우 유용합니다. 나는. 변경할 수없는/싱글 톤 new()를 허용하지 않습니다. –

3

"기본"키워드는 그것은 때문에 일반적인 재산을 사용하는 클래스 목록과 더 많은 종류의 같은 개체의 인스턴스를 초기화하는 데 도움이 : 당신은 생성자 제약 조건이 대조 할 수 있습니다 향후 (미래) 코드의 실수를 피하기위한 사전 방법으로 그 값을 모르는 경우 유형 기본값을 할당하는 데 도움이됩니다.

관련 문제