C # 빈 문자열 배열 선언


152

빈 문자열 배열을 선언해야 하며이 코드를 사용하고 있습니다

string[] arr = new String[0]();

그러나 "방법 이름이 예상됩니다"라는 오류가 발생합니다.

뭐가 문제 야?


2
왜 빈 배열이 필요합니까? 무엇을하려고합니까?
Mr. T.

7
@MrT. 실제로 질문과 관련이 없습니다.
James

1
@ 제임스-어쩌면 그가하려는 일을 할 수있는보다 우아한 방법이있을 수 있습니다.
Mr. T.

4
@ aquanat-답변이 이미 수락되었지만 코드 나 그 논리를 알지 못하지만 빈 배열을 반환하지 말고 null을 반환하고 반환 값이 null이거나 호출 함수에서 확인하는 것이 좋습니다. 아니. 나는 그것이 훨씬 더 우아하고 읽기 쉽고 효율적이라고 생각합니다.
Mr. T.

2
null을 반환하지 않으려는 이유는 메서드 소비자가 null을 확인해야하기 때문입니다. 예를 들어, 메소드의 소비자는 리턴 된 값을 foreach에 넣을 수 있으며 빈 배열이 리턴되면 아무런 문제가 없습니다. 그러나 null이 반환되면 반환 된 값을 반복하기 전에 null을 확인해야합니다.
JAB

답변:


265

이 시도

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

1
고마워요 ... 왜 냐고 묻지는 않지만 유일한 방법은 : string [] arr = new String [0] as string [];
aquanat

2
Atish의 방법이 작동하고 if 문에 변수를 할당하면 초기화되지 않은 변수를 사용하는 것에 대한 Visual Studio의 불만을 제거했습니다
Joe

1
다른 옵션은c# Array.Empty<string>()
Jannick Breunis

68

구문이 잘못되었습니다 :

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

또는

string[] arr = new string[0];

1
예제에서 문자열이 대문자와 대문자가 아닌 이유는 무엇입니까?
NotALie입니다.

1
@newStackExchangeInstance, 질문에서 "있는 그대로"코드를 복사했습니다. 하나의 스타일을 따르는 것이 더 낫다는 것에 동의하지만 두 줄은 모두 잘 컴파일됩니다.
Andrei

15

.net 4.6을 사용하는 경우 사용할 수있는 새로운 구문이 있습니다.

using System;  // To pick up definition of the Array class.

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

좋은 트릭! 또한 IList <T>에서도 작동합니다. IList <string> x = Array.Empty <string> ();
ZunTzu


8

배열의 생성자는 다릅니다. 빈 문자열 배열을 만드는 방법은 다음과 같습니다.

var arr = new string[0];
var arr = new string[]{};
var arr = Enumerable.Empty<string>().ToArray()

(죄송합니다, 모바일)


1

그 곱슬 곱슬 한 것들은 때로는 기억하기 어렵 기 때문에 훌륭한 문서가 있습니다 .

// Declare a single-dimensional array  
int[] array1 = new int[5];

답변은 구체적인 목적이 아니라 일반적인 목적에 부합하기 때문에이 답변을 편집 할 필요가 없습니다. "배열을 선언하고 초기화하는 구문은 무엇입니까?"라고 대답 하고 내가 게시 한 링크에서 인용 한 것입니다. 영업 이익은 대체 할 수 int와 함께 string그가 좋아합니다.
CodeCaster

1

구문이 유효하지 않습니다.

string[] arr = new string[5];

그러면이 arr배열의 모든 요소가있는 참조 된 문자열 배열 이 생성 됩니다 null. (문자열은 참조 유형 이므로 )

이 배열에는에서까지의 요소가 포함 arr[0]됩니다 arr[4]. new연산자 배열을 생성하고 기본값으로 배열 요소를 초기화하기 위해 사용된다. 이 예에서 모든 배열 요소는로 초기화됩니다 null.

Single-Dimensional Arrays (C# Programming Guide)


고마워요 ... 왜 냐고 묻지는 않지만 유일한 방법은 : string [] arr = new String [0] as string [];
aquanat

0

빈 배열을 만들어야하는 경우 다음을 수행 할 수 있습니다.

string[] arr = new string[0];

당신이 크기를 모른다면 다음 List<string>과 같이 사용할 수도 있습니다.

var valStrings = new List<string>();

// do stuff...

string[] arrStrings = valStrings.ToArray();

정말 죄송합니다. 실수로 잘못된 수정 사항으로 게시물을 망쳤습니다.
Soner Gönül

-3

다음은 잘 작동합니다.

string[] arr = new string[] {""};

5
빈 문자열이 아닌 하나의 요소를 포함하므로 빈 배열이 아닙니다. arr.Length () 1. 반환합니다
기예르모 Prandi

이것은 빈 배열이 아닐 수도 있지만이 답변은 null safe입니다. 감사! 1 위!
hubert17
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.