ProgramingTip

Remove () 메소드가 문자를 변수로 허용하는 이유는 무엇입니까?

bestdevel 2020. 12. 10. 20:55
반응형

Remove () 메소드가 문자를 변수로 허용하는 이유는 무엇입니까?


이 코드를 고려하십시오.

var x = "tesx".Remove('x');

이 코드를 실행하면 다음 예외가 발생합니다.

startIndex는 길이보다 작아야합니다.

이 메소드에 int 대신 char를 사용하는 이유는 무엇입니까? 오류가 발생하지 않는 이유는 무엇입니까?

여기에 이미지 설명 입력

컴파일러 에이 동작이있는 이유는 무엇입니까?


char로 선언 된 'x'를 강화할 수 있습니다.

.Remove유일한 유형의 두 가지 사항 변수를 int시작하고 (선택한) 소수에서 제거 계산합니다.

char를 전달 하면 정수 표현으로 변환 됩니다. 의미는 'x'를 전달하면-> 120 이보다 크므 .Length로이 오류가 발생합니다!


Implicit conversionchar을 int로 변환 할 수있는 명시 적 변환이 필요하지 않은 코드를 사용할 수 있습니다. 이것은 대답은 될 것입니다 600 (120*5)-

        char c = 'x';
        int i = c;
        int j = 5;
        int answer = i * j;

에서 MSDN , 암시 적 변환은 다음과 같이 요약된다-

암시 적 변환

다른 사람이 말했듯이 유효한 입력을 사용 Replace하거나 사용할 수 있습니다 Remove.


의 확장가 Remove그은을지지 char언어로 암시 적으로 변환, int그리고 Remove방법의 시도는 외부 방법입니다. 오류가 발생하는 이유입니다.

Remove판매의 일부를 제거 하는 사용되는 위치를 찾을 수 있습니다. 예 :

var x = "tesx";
var x = x.Remove(x.IndexOf('x'), 1);

이것은 'x'문자열에서 첫-th 발생을 제거 합니다. 둘 이상의 발생 가능성이 Replace있습니다.

var x = "tesx".Replace("x", String.Empty);

제거는 전역 변수를 사용하여 문자 제거 합니다. msdn을 참조하십시오 . 제거 호출은 문자를 ASCII 정수로 자동 변환하고 고급스러운 문자를 제거하는 것이 아닙니다.

업그레이드에서 x가 발생하는 경우를 선택하십시오.

"testx".Replace("x",string.Empty);

64 비트에서 x의 첫 번째 수준을 선택하십시오.

var value = "testx1x2";
var newValue = value.Remove(value.IndexOf('x'), 1);

함수에 문자를 전달 하고이 값은 런타임에 int로 변환됩니다.

var x = "tesx";
var s = x.Remove(x.IndexOf('x'), 1);

또는

var s = x.Replace("x",string.Empty);

.Remove 는 INT를 매개 변수로 사용합니다. 제거는 두 개의 다음 변수를 사용합니다. 첫 번째는 시작하려는 위치입니다. (카운트는 0부터 시작합니다.) 두 번째 매개 변수는 위치부터 삭제하려는 문자 수입니다.

참고 :

MSDN에서 :

이 메서드 (.Remove)는 현재 인스턴스의 값을 수정하지 않습니다. 대신 count 매개 변수로 지정된 문자 수가 제거 된 새 페이지를 리턴합니다. startIndex에 지정된 위치에서 문자가 제거됩니다.


확장 메서드를 사용하여 이미 존재하는 클래스에 대한 고유 한 메서드를 만들 수 있습니다. 다음 예를 고려하십시오.

using System;
using MyExtensions;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            const string str1 = "tesx";
            var x = str1.RemoveByChar('x');
            Console.WriteLine(x);
            Console.ReadKey();
        }
    }
}

namespace MyExtensions
{
    public static class StringExtensions
    {
        public static string RemoveByChar(this String str, char c)
        {
            return str.Remove(str.IndexOf(c), 1);
        }
    }
}

참고 URL : https://stackoverflow.com/questions/19343958/why-does-the-string-remove-method-allow-a-char-as-a-parameter

반응형