[C#] String.Empty와 같은 Char.Empty가없는 이유는 무엇입니까?

이것에 대한 이유가 있습니까? 빈 문자를 많이 사용해야하는 경우 빈 문자열을 많이 사용할 때와 같은 상황에 처하기 때문에 묻습니다.

편집 :이 사용법의 이유는 다음과 같습니다.

myString.Replace ('c', '')

따라서 myString에서 ‘c’의 모든 인스턴스를 제거하십시오.



답변

빈 문자와 같은 것은 없습니다. 가장 가까운 '\0'것은 유니 코드 “널”문자입니다. 문자열 리터럴에 포함하거나 매우 쉽게 표현할 수 있다면 왜 별도의 필드를 원할까요? 마찬가지로는 “이 혼동하기 쉬운 """ "인수가 적용되지 않습니다” '\0'.

어디에서 사용하고 싶고 왜 더 좋을지에 대한 예를들 수 있다면 도움이 될 것입니다 …


답변

문자열과 달리 문자는 고정 된 크기를 가진 별개의 것입니다. 문자열은 실제로 문자 컨테이너입니다.

따라서 Char.Empty는 해당 맥락에서 실제로 의미가 없습니다. 문자가 있으면 비어 있지 않습니다.


답변

빈 캐릭터와 같은 것은 없습니다. 항상 무언가를 포함 합니다 . ‘\ 0’조차도 문자입니다.


답변

사용 Char.MinValue‘\ 0’과 동일하게 작동합니다. 그러나와 같지 않도록주의하십시오 String.Empty.


답변

널 입력 가능 문자를 사용할 수 있습니다 .

char? c


답변

전체 문자열이 필요하지 않으면 지연된 실행을 활용할 수 있습니다.

public static class StringExtensions
{
    public static IEnumerable<char> RemoveChar(this IEnumerable<char> originalString, char removingChar)
    {
        return originalString.Where(@char => @char != removingChar);
    }
}

여러 문자를 결합 할 수도 있습니다 …

string veryLongText = "abcdefghijk...";

IEnumerable<char> firstFiveCharsWithoutCsAndDs = veryLongText
            .RemoveChar('c')
            .RemoveChar('d')
            .Take(5);

… 첫 7 자만 평가됩니다 🙂

편집 : 또는 훨씬 더 :

public static class StringExtensions
{
    public static IEnumerable<char> RemoveChars(this IEnumerable<char> originalString,
        params char[] removingChars)
    {
        return originalString.Except(removingChars);
    }
}

그리고 그 사용법 :

        var veryLongText = "abcdefghijk...";
        IEnumerable<char> firstFiveCharsWithoutCsAndDs = veryLongText
            .RemoveChars('c', 'd')
            .Take(5)
            .ToArray(); //to prevent multiple execution of "RemoveChars"


답변

myString = myString.Replace('c'.ToString(), "");

.Replace 메서드에는 문자열 매개 변수를 사용하는 오버로드가 있으므로 문자를 제거하는 데 특히 적합하지 않습니다. 그러나 이것은 캐리지 리턴, 줄 바꿈, 탭 등을 제거하는 데 효과적입니다.이 예에서는 탭 문자를 제거합니다.

myString = myString.Replace('\t'.ToString(), "");