Microsoft MVP성태의 닷넷 이야기
String의 IndexOfAny 함수 질문 [링크 복사], [링크+제목 복사]
조회: 5966
글쓴 사람
Dev
홈페이지
첨부 파일
 

string txt = "asdf";
txt.IndexOfAny(new char[] { 'q', 'b' }, txt.Length);

위와 같은 코드를 실행시켰을 때 분명 제 생각엔 인덱스값이 벗어나서 오류가 나야합니다. 하지만 오류가 나지 않고 그냥 실행 되네요

txt.IndexOfAny(new char[] { 'q', 'b' }, txt.Length + 1);
실제로 위 같이 실행시키면 오류가 납니다.
뭐 때문일까요? 제가 잘못 생각한건가요?








[최초 등록일: ]
[최종 수정일: 8/23/2021]


비밀번호

댓글 작성자
 



2021-08-23 11시15분
저 역시 그래야 할 것 같다는 것에 동의합니다. 하지만, IndexOfAny의 구현이 다음과 같이 되어 있어서,

public int IndexOfAny(char[] anyOf, int startIndex)
{
    return IndexOfAny(anyOf, startIndex, Length - startIndex);
}

public extern int IndexOfAny(char[] anyOf, int startIndex, int count);

"Length - startIndex" 코드로 마지막 count == 0이 되고, 문서에 의하면 count < 0 || startIndex < 0인 경우, 또는 count + startIndex > Length인 경우에만 ArgumentOutOfRangeException 예외를 발생한다고 하니, 문제는 없는 것 같습니다.

String.IndexOfAny Method
; https://docs.microsoft.com/en-us/dotnet/api/system.string.indexofany
정성태
2021-08-24 03시25분
[Dev] 아 그래서 오류가 안나는 거군요.. 감사합니다.
이건 조금 다른 질문인데 혹시라도 위와 같이
txt.IndexOfAny(new char[] { 'q', 'b' }, txt.Length);
비슷하게 txt.Length와 똑같은 값이 넣어지는 코드가 있다면
ex)
string txt = "asdf";
int i = 3;
txt.IndexOfAny(new char[] { 'q', 'b' }, i + 1};
어떻게든 수정해서 쓰는 게 맞을까요 아니면 저대로 써도 될까요?
[guest]
2021-08-24 09시44분
위의 내용을 다시 질문해 주세요. 딱히 어떤 경우인지 잘 이해가 안 됩니다. 3번째 인자의 값을 txt.Length로 주는 것이 나은지, int i = 3; 으로 해놓고 굳이 그걸 i + 1로 전달하는 것이 나은지를 묻는 건가요?
정성태

1  2  3  4  5  6  [7]  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
5778이건우12/30/20224508안녕하세요 c#에서 dll참조 관련 질문드립니다. [4]
5777감사합니...12/29/20223532UI Thread에 Invoke 처리관련 궁금합니다. [3]
5776pdf맨12/28/20223335C# MouseUp Event + pdf [10]
5775민성12/28/20223102안녕하세요 Class 관련해서 예외처리를 하나로 받아낼수 있는 방법 [1]
5774중급12/27/20223886중급개발자란 어느 수준인지요? [4]
5773김영식12/26/20223427c# 압축파일 읽어 올 때 BinaryRead 한글 처리 문제 [1]
5772눈송이12/26/20223542Excel VSTO 는 왜 Net Core, Net 5, 6 버전을 사용하지 않나요? [2]
5771김훈12/26/20223644c# .net client application 망분리(내부망,외부망) 환경에서 의문의 외부사이트 호출 대기 [2]
5770lsh12/26/20223250클라우디움안에 있는 파일을 File.Copy 하고싶은데 코드로는 접근을 못하나요? [1]
5769울타리12/20/20223305Active Directory 2012R2 2016 또는 2019 마이그렝션 문의 드립니다. [1]
5768c++12/14/20224060Thread를 사용한 C++ DLL에 관련된 질문입니다. [6]파일 다운로드2
5767민성12/9/20223417안녕하세요 ashx로 화일을 저장하고 화일명을 리턴하는데요 [1]
5766김명훈12/9/20223568웹브라우저에서 묻지 않고 바로 다운로드 [2]
5765hong12/1/20223788Winform(.Net6) 클라이언트에서 SignalR Core 웹서버에 접속시 인증서 문제 [3]파일 다운로드1
5764요한11/30/20224014c++ 동일한 객체인지 비교 방법문의 [2]
5763고필석11/30/20223512시작하자마자 비정상 종료하는 프로세스에 대한 문제 해결 조언 요청 드립니다. [3]
5762흰털너부리11/30/20223501wpf mvvm ui update 로딩중 표시 [1]
5761민성11/29/20223403죄송하지만 한가지만 더 여쭈어 보겠습니다 [1]
5760민성11/29/20223342안녕하세요 [2]
5759문정환11/28/20223684c# socket 통신할때 빅엔디언으로 바꿔줘야 하나요? [1]
5758라떼11/28/20224880Linux 에서 winform UI 어플리케이션 실행하기 [3]
5757흰털너부리11/25/20223825asp.net core EF AddDbContext,AddDbContextFactory 차이점 알려주세요 [1]
5756흰털너부리11/25/20223405asp.net core web api에서 json 특정 property 무시하는 방법 문의 드립니다. System.Text.Json 사용중입니다. [1]
5755문정환11/24/20223743싱글스레드 프로그램도 컨텍스트 스위칭이 생길 수 있나요? [4]
5754초급11/24/20223583c# 소켓통신 [1]
5753흰털너부리11/24/20223386List와 ObservableCollection을 비교 해서 다른 값 추출 FirstOrDefault 객체 비교 [4]파일 다운로드1
1  2  3  4  5  6  [7]  8  9  10  11  12  13  14  15  ...