답변
내부적
MSDN 가입일
Console.WriteLine(str.LastIndexOf('\0'));
길이를 반환해야하지만, 출력은 텍스트가 순차 읽기로 저장된 Char 개체의 유일한 컬렉션입니다. C# 문자열 끝에는 null 종결 문자가 없습니다. 그러므로 C# 문자열은 임의의 수의 내장 된 널 문자 ('\ 0')를 포함 할 수 있습니다. 이 그것을 직접 전달 될 수있는 수단으로서 존 소총의 Strings in .NET and C#
에서도
문자열은 널 종료 멀리 API에 관한 한 아니지만는 문자 배열은 널 종료 인 inter-op가 문자열을 유니 코드로 마샬링해야한다고 지정한다고 가정하면 복사 작업이 포함되지 않은 관리되지 않는 함수에 적용됩니다.
가 간단히 내부 문자 배열은 \0
로 끝나지 않지만 API (예를 들어, LastIndexof
)는 무시된다. 수동 교류 # 문자열 (예를 들어, Hello\0World
)의 중간에 \0
를 삽입하면
또한,는 C# 문자열 API가 그것을 무시하지만, 다른 API의의가 첫 번째 \0
과거의 모든 것을 무시하고 결국하지 않을 수 있습니다 (예 : , World
).
string
객체가 문자열의 길이를 포함하는 reference source
public override int GetHashCode() {
//...
Contract.Assert(src[this.Length] == '\0', "src[this.Length] == '\\0'");
//...
}
좋아요, LastIndexOf가 \ 0을 무시하면 그 존재를 확인하는 방법을 제안 해주세요. – Sujeet
@SujeetKumar 다시 전체 C# API에서 무시됩니다. 증명을 원한다면 1) 소스 코드를 보거나 2) 널 문자의 존재를 검사하는 작은 C 프로그램을 작성하고 P/Invoke를 사용하여 C#에서 호출 할 수 있습니다. C# 소스 코드의 일부분을 추가하여 문자열이 null-char로 끝나는 것을 증명했습니다. – dcastro
당신은 우리의 말을 받아 들일 수 있습니다. 디버거를보고 싶다면 Debug + Windows + Memory + Memory 1 창이 나타납니다. 주소 상자에 문자열 변수 이름을 입력하십시오. 패딩이나 다른 객체에 속하는 바이트와 구별하기가 어렵지만 0은 정확히 두드러지지 않습니다. 객체의 syncblk는 종종 0입니다. –
보면,이 말은 위치를 알지 방법이다. 실제로 관리되지 않는 호환성을 위해 문자열 끝에 '\ 0'기호가 있지만 관리 코드에서 액세스 할 수 없습니다.
따라서 'LastIndexOf()'의 범위를 벗어납니다. –
- 1. 문자열의 끝 부분에 더블을 추가하기 (C++)
- 2. Regext 일치하는 문자열의 끝
- 3. 문자열의 클래스 끝 찾기
- 4. strlen 문자열의 끝 사용
- 5. 자바 스크립트에서 문자열의 트림 끝
- 6. 정규식 찾기 문자열의 시작과 끝
- 7. 정규식으로 문자열의 끝 부분을 제거
- 8. Emacs regexps의 문자열의 시작과 끝
- 9. 문자열의 끝 문자를 찾으려면 VbScript
- 10. 문자열의 시작과 끝 문자를 필터링합니다.
- 11. 교리 DQL 문자열의 예상 끝,
- 12. 정규 표현식을 사용하여 문자열의 끝 부분 바꾸기
- 13. 오류 문자열의 끝 파일 이름을 추가하려고 :
- 14. 주어진 문자열의 부분 문자열 복사 주어진 문자열의 끝 색인
- 15. 문자열의 끝 공백을 다듬는 방법은 무엇입니까? 자바에서
- 16. MySQL 문자열에서 문자열의 끝 위치 찾기
- 17. 캡처 임의의 하나 '/'전에 문자열이나 문자열의 끝
- 18. gsub을 사용하여 문자열의 끝 부분을 제거하십시오.
- 19. PHP : 문자열의 일부를 선택하여 (변경 끝)
- 20. 파일 끝 부분이 C
- 21. 문자열의 나머지 부분에 영향을주지 않고 내용이 가변 순서대로 나타나는 문자열의 끝 부분을 제거합니다.
- 22. 문장을 토큰화할 때 문자열의 끝 부분에는 어떤 유형의 표시기가 있습니까?
- 23. 정규식 - 일치하는 공백 또는 문자열 끝 C#
- 24. String.split에서 문자열의 시작 부분과 끝 부분을 다르게 처리하는 이유는 무엇입니까?
- 25. 끝
- 26. C 문자열의 부분 문자열 찾기
- 27. C - 파일 끝 찾기 이전에
- 28. 행의 끝 단어 계산 (C++)
- 29. C LinkedList 끝 노드 추가
- 30. C# PDFharp 페이지 끝 감지
아니요. 문자열은 C와 같이 Null로 끝나는 대신 문자 배열과 길이 마커를가집니다. – Casey
0으로 끝나는 문자열은 'C'에서 사용되며 C#에서는 사용되지 않습니다. –
.NET 문자열의 끝에 0이있는 이유는 I/O에서 문자열이 많이 사용되고 운영 체제 호출이 필요하기 때문입니다. C 호출. 컴파일러는 관련이 없으므로 대부분의 문자열 처리 코드는 CLR에 있으며 끝 부분에 제로 터미네이터를 가져옵니다. –