StringBuilder 클래스가 스트림에서 상속되지 않은 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/496472

  •  20-08-2019
  •  | 
  •  

문제

나는 이것에 대해 궁금합니다. StringBuilder의 동작이 기능적으로 (기술적으로는 아님) 스트림과 동일하다는 사실을 알게됩니다. 다른 데이터를 추가 할 수있는 데이터의 빈입니다.

다시, 궁금합니다.

도움이 되었습니까?

해결책

스트림은 입력 및 출력입니다 이진 데이터.

StringBuilder는 구축 수단입니다 텍스트 데이터.

그 외에도 상태 문제가 있습니다. StringBuilder는 "포지션"에 대한 전혀 모르지만 현재 값을 가지고 있습니다. 이를 통해 데이터에 액세스하고 돌연변이 할 수 있습니다. 반면에 스트림은 논리적으로 잠재적으로 무한한 데이터 스트림이며, 중간에 커서가 어디에 있는지 말하기 위해 커서입니다. 귀하는 일반적으로 데이터 스트림의 특정 부분으로 건너 뛰기 위해 Seek/Position을 사용하여 앞으로 읽고 쓰기 만하면됩니다.

StringBuilder로 Stream API를 구현하는 것을 상상해보십시오 ... 단지 맞지 않습니다. 당신은 할 수 있습니다 종류 이를 수행하지만 StringReader와 StringWriter는 기본적으로 끝납니다.

다른 팁

StringBuilder 기능 만 추가하는 것 이상이 있습니다. 또한 스트림에 부자연스럽지 않은 함수 삽입 기능이 있습니다. 사용 StringWriter 클래스 랩을 원하는 스트림을 원한다면 a StringBuilder.

스트림은 일반적으로 외부 입력/출력 소스 (파일, 네트워크)를 나타냅니다. StringBuilder는 그러한 특성이 없습니다.

실제로 스트림이 아니기 때문입니다. 그것은 자라는 버퍼에 가깝습니다.

둘 다 데이터를 추가 할 수 있지만 전체 기능은 다릅니다.

스트림은 무언가를 구축하는 것이 아니라 일부 소스에서/로 데이터를 입력하거나 출력하는 것입니다. StringBuilder는 리소스를 구축하기 위해 스트림이 제공하는 기능이 필요하지 않습니다.

반면에 수업을 찾을 수 있습니다 StringReader/작가 System.io에서. 그만큼 StringWriter 예를 들어 구현 텍스트 작가 기본에 대하여 StringBuilder.

개인적으로 나는 그것을 사용한 적이 없지만 텍스트 파일 쓰기 루틴이 있다면 당신은 그것을 텍스트 작가. 그런 다음 시험에서 인스턴스화하는 대신 a 스트림 라이터 당신은 인스턴스화 a StringWriter 그런 다음 기초를 보면서 작성된 내용을 확인할 수 있습니다. StringBuilder.

이제 나는 현기증 ...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top