메모리 할당 로직 C#은 코드 컴파일 후 실행파일을 만들고 파일을 실행하면 CLR이 프로그램을 위해 메모리의 일정 구역을 확보한다. 넓은 공간을 통째로 확보 후 하나의 생성 CLR이 확보한 힙의 첫 주소는 "다음 객체 할당을 위한 메모리 포인터"로 선정 결과적으로 프로그램이 실행되면 프로그램을 위한 메모리 공간 확보 및 첫 주소값 메모리 포인터 할당이 이루어진다. 데이터 영역별 메모리 할당 힙영역 참조 형식(참조 타입) 객체와 동적으로 할당된 객체는 힙에 할당 힙에는 객체의 실제 데이터가 저장 스택이나 다른 객체에서 해당 객체를 참조할 때 사용되는 참조(주소)가 힙 영역에 저장 다음과 같이 새로운 오브젝트를 선언한다. object obj1 = new object(); 이러면 힙에 새로운 메모리를 할당한 ..
StringBuilder 변경이 가능한 문자열을 나타내는 클래스 string 객체는 값이 변경되면 메모리에 새로운 참조 값을 생성하고 이전 참조 값을 버린다. StringBuilder는 객체의 참조 값을 변경하지 않고 힙 메모리에서 값이 삽입, 추가, 제거될 수 있다. 즉, 문자열을 반복적으로 수정해야하는 경우 객체 생성 StringBuilder 클래스는 System.Text 네임스페이스의 객체이므로 using문에 다음과 같이 System.Text를 추가한다. using System; using System.Text; StringBuilder 개체 인스턴스화 StringBuilder 객체 선언 및 초기화는 일반 객체와 동일하다. 다음은 StringBuilder 객체를 생성과 생성과 초기화를 함께 하는 예..
문자열 연결 문자열을 연결하는 다양한 방법들 1. String Operator (+, +=), String.Concat 2. String.Format 3. Interpolation (보간) 4. String.Join 5. StringBuilder String Operator (+, +=), Concat 문자열 리터럴 방법이라고도 불리는 +연산자로 연결하는 방법은 string.Concat() 메서드를 사용하는 것과 동일한 방법이다. (Concat 메서드에 오버로드 함수들은 따로 정리해놓았다.) Concat 메서드를 본다면 최대 4개의 문자열을 인수로 갖고 있다. 6개의 문자열을 연결한다면 반복문을 통해 첫 4개씩 엮어서 연결 후 남은 2개의 문자열과 연결하게된다. 즉, 4개 이상의 연결에는 추가 연산을 요..
String.Remove 문자열에 지정된 범위를 삭제하는 함수 함수명 String.Remove 오버로드 Remove(Int32) 지정된 위치부터 마지막까지 모든 문자를 삭제하여 새 문자열을 반환 Remove(Int32, Int32) 지정된 범위 사이 모든 문자를 삭제하여 새 문자열을 반환 반환값 string Remove(Int32) & Remove(Int32, Int32) using System; public class HelloWorld { public static void Main() { string s = "abc---def"; Console.WriteLine("Index: 012345678"); Console.WriteLine("1) {0}", s); Console.WriteLine("2) {0}..