[C#] C #에서 빈 배열을 어떻게 초기화합니까?

크기를 지정하지 않고 빈 배열을 만들 수 있습니까?

예를 들어, 나는 다음을 만들었습니다.

String[] a = new String[5];

크기없이 위의 문자열 배열을 만들 수 있습니까?



답변

미리 크기를 모르는 컬렉션을 사용하려는 경우 배열보다 더 나은 옵션이 있습니다.

List<string>대신 사용하십시오 -필요한만큼 항목을 추가 할 수 있으며 배열을 리턴해야하는 경우 ToArray()변수를 호출 하십시오.

var listOfStrings = new List<string>();

// do stuff...

string[] arrayOfStrings = listOfStrings.ToArray();

당신이 경우 해야한다 하늘의 배열을 만들려면이 작업을 수행 할 수 있습니다 :

string[] emptyStringArray = new string[0]; 


답변

이 시도:

string[] a = new string[] { };


답변

.NET 4.6에서 선호되는 방법은 다음과 같은 새로운 방법을 사용하는 것입니다 Array.Empty.

String[] a = Array.Empty<string>();

구현 하여, 간결이다 일반적인 클래스의 정적 멤버 닷넷에서 어떻게 행동하는지 :

public static T[] Empty<T>()
{
    return EmptyArray<T>.Value;
}

// Useful in number of places that return an empty byte array to avoid
// unnecessary memory allocation.
internal static class EmptyArray<T>
{
    public static readonly T[] Value = new T[0];
}

(명확성을 위해 코드 계약 관련 코드가 제거됨)

또한보십시오:


답변

크기를 0으로 초기화 할 수는 있지만 크기를 알면 배열에 추가 할 수 없으므로 크기를 다시 초기화해야합니다.

string[] a = new string[0];


답변

크기가없는 배열을 선언하는 데는 아무런 의미가 없습니다. 배열 은 대략 size 입니다. 특정 크기의 배열을 선언 할 때 콜렉션을 보유 할 수있는 고정 슬롯 수를 지정하면 메모리가 할당됩니다. 그것에 무언가를 추가하려면 어쨌든 기존 배열을 다시 초기화해야합니다 (배열의 크기를 조정 하더라도이 스레드를 참조하십시오 ). 빈 배열을 초기화하려는 드문 경우 중 하나는 배열을 인수로 전달하는 것입니다.

가능한 크기를 모를 때 컬렉션을 정의하려면 배열을 선택하는 것이 아니라 List<T>비슷한 것을 선택하십시오 .

즉, size를 지정하지 않고 배열을 선언하는 유일한 방법은 크기가 0 인 빈 배열을 갖는 것 입니다. hemantAlex Dn 은 두 가지 방법을 제공합니다. 또 다른 간단한 대안은 다음과 같습니다.

string[] a = { };

[ 괄호 안의 요소는 예를 들어 정의 된 유형으로 암시 적으로 변환 가능해야합니다.string[] a = { "a", "b" }; ]

또는 또 다른 :

var a = Enumerable.Empty<string>().ToArray();

보다 선언적인 방법은 다음과 같습니다 .

public static class Array<T>
{
    public static T[] Empty()
    {
        return Empty(0);
    }

    public static T[] Empty(int size)
    {
        return new T[size];
    }
}

이제 전화를 걸 수 있습니다 :

var a = Array<string>.Empty();

//or

var a = Array<string>.Empty(5);


답변

간단하고 우아한!

string[] array = {}


답변

string[] a = new string[0];

또는 짧은 표기법 :

string[] a = { };

현재 선호되는 방법은 다음과 같습니다.

var a = Array.Empty<string>();

길이가 0 인 할당을 바꾸려면 Visual Studio에서 사용할 수있는 짧은 정규 표현식을 작성했습니다 new string[0]. 정규식 옵션을 설정 한 상태로 Visual Studio에서 찾기 (검색)를 사용하십시오.

new[ ][a-zA-Z0-9]+\[0\]

이제 모두 또는 F3 (다음 찾기)을 찾아 모두 Array.Empty <…> ()로 바꾸십시오!