C\#의 string 과 String 을 자세히 설명 합 니 다.
문자열 은 String 형식의 대상 입 니 다.값 은 텍스트 입 니 다.내부 에서 텍스트 가 Char 대상 으로 저 장 된 순 서 는 집합 만 읽 습 니 다.C\#문자열 끝 에 null 로 끝 나 는 문자 가 없습니다.따라서 C\#문자열 은 임의의 수의 끼 워 넣 기 null 문자("\0")를 포함 할 수 있 습 니 다.문자열 의 Length 속성 은 유 니 코드 문자 가 아 닌 Char 대상 의 수 를 나타 낸다.문자열 의 각 유 니 코드 코드 위치 에 접근 하려 면 StringInfo 대상 을 사용 하 십시오.
소문 자 string 과 대문자 String
C\#에서 키워드 string 은 String 의 별명 입 니 다.따라서 String 은 string 과 같은 효 과 를 가 집 니 다.즉,사용 하고 싶 은 것 을 사용 하 는 것 입 니 다.String 클래스 는 문자열 을 안전하게 만 들 고 조작 하 며 비교 하 는 방법 을 많이 제공 합 니 다.이 밖 에 C\#언어 는 일반적인 문자열 작업 을 간소화 하기 위해 일부 연산 자 를 다시 불 러 옵 니 다.
string 설명 및 초기 화
예 시 를 보십시오.
static void Main(string[] args)
{
//
string msg1;
// null
string msg2 = null;
// , Empty( ) ""( )
string msg3 = String.Empty;
//
string oldPath = "c:\\windows";
//
string newPath = @"c:\windows";
// System.String
String content = "Hello World!";
// const msg4
const string msg4 = "I'm const!";
// var
var msg5 = "Hi!";
// String
char[] letters = { 'A', 'B', 'C' };
string alphabet = new String(letters);
Console.Read();
}
[주의]문자열 을 문자 배열 로 초기 화 할 때 를 제외 하고 new 연산 자 를 사용 하여 문자열 대상 을 만 들 지 마 십시오.Empty 상수 값 을 사용 하여 문자열 을 초기 화하 면 문자열 길이 가 0 인 String 대상 을 새로 만 들 수 있 습 니 다.0 길이 문자열 의 문자열 은''형식 을 표시 합 니 다.null 대신 Empty 값 을 사용 하여 문자열 을 초기 화하 면 NullReference Exception 이 발생 할 가능성 을 낮 출 수 있 습 니 다.문자열 에 접근 하기 전에 정적 IsNullOrEmpty(String)방법 으로 문자열 의 값 을 검증 합 니 다.
string 의 불변성
문자열 대상 은 변경 할 수 없습니다.즉,만 든 후에 변경 할 수 없습니다.문자열 을 수정 하 는 것 처럼 보 이 는 String 방법 과 C\#의 연산 자 는 사실상 새로운 문자열 대상 으로 결 과 를 되 돌려 줍 니 다.다음 예제 에 서 는 s1 과 s2 의 내용 을 연결 하여 하나의 문자열 을 만 들 때 두 개의 원본 문자열 을 수정 하지 않 습 니 다.+=연산 자 는 조합 내용 을 포함 하 는 새 문자열 을 만 듭 니 다.이 새 대상 은 변수 s1 에 부 여 됩 니 다.최초 로 s1 에 부 여 된 대상 은 다른 변수 가 그 에 대한 인용 을 포함 하지 않 아 방출 되 며 나중에 쓰레기 로 수 거 됩 니 다.
예시 1:
static void Main(string[] args)
{
var s1 = "Hi!";
var s2 = "Fanguzai!";
// s1 s2, s1
s1 += s2; // s1 = s1 + s2;
Console.WriteLine(s1);
Console.Read();
}
그림:var s1="Hi!";var s2 = "Fanguzai!";
그림:s1=s1+s2;s1 의 방향 을 다시 수정 합 니 다.
'수정'문자열 은 실제 적 으로 새 문자열 을 만 드 는 것 이기 때문에 문자열 에 대한 인용 을 만 들 때 신중 해 야 합 니 다.문자열 에 대한 인용 을 만 들 고 원본 문자열 을 수정 하면 이 인용 은 문자열 을 수정 할 때 만 든 새로운 대상 이 아 닌 원본 대상 을 가리 키 고 있 습 니 다.
static void Main(string[] args)
{
var s1 = "Hi! ";
var s2 = s1;
// s1 , s2
s1 += "Fanguzai!"; // s1 = s1 + "Fanguzai!";
Console.WriteLine(s2);
Console.Read();
}
그림:var s1="Hi!";s2 = s1; 그들 은 같은 인용 주 소 를 가리킨다.
그림:s1=s1+"Fanguzai!";인용 되 지 않 은"Fanguzai!"를 만 들 것 입 니 다.s1 이 가리 키 는 값 을 다시 수정 합 니 다.
정규 string 과 원 의 string
C\#에서 제공 하 는 전의 자 를 삽입 해 야 한다 면 정규 문자열 을 사용 해 야 합 니 다:
static void Main(string[] args)
{
var coluString = "Col1\tCol2\tCol3";
var rowString = "Row1\r
Row2\r
Row3";
Console.WriteLine(coluString);
Console.WriteLine("=====");
Console.WriteLine(rowString);
Console.Read();
}
문자열 텍스트 에 역 슬 래 쉬 문자(예 를 들 어 파일 경로 에서)가 포함 되 어 있 으 면 읽 기 편 하도록 원래 의 문자열 을 사용 해 야 합 니 다.원래 의 문자열 은 문자열 텍스트 의 일부분 으로 줄 바 꿈 자 를 유지 하기 때문에 여러 줄 의 문자열 을 초기 화 할 수 있 습 니 다.원래 의 문자열 에 인용 부 호 를 삽입 할 때 인용 부 호 를 사용 하 십시오.다음 예제 에 서 는 원 의 문자열 의 일반적인 용 도 를 보 여 줍 니 다.
static void Main(string[] args)
{
var path = @"C:\Windows";
var text = @"Are you Fanguzai?
I'm Fanguzai!";
Console.WriteLine(path);
Console.WriteLine("=====");
Console.WriteLine(text);
Console.Read();
}
string 의 전의 시퀀스
[비고]컴 파일 할 때 원래 의 문자열 은 모든 전의 서열 이 변 하지 않 는 일반 문자열 로 변 환 됩 니 다.따라서 디 버 거 감시 창 에서 원 의 문자열 을 보면 원본 코드 의 원 의 버 전이 아 닌 컴 파일 러 가 추가 한 전의 문 자 를 볼 수 있 습 니 다.예 를 들 어 원래 의 문자열@"C:\temp.txt"는 감시 창 에"C:\\\\temp.txt"로 표 시 됩 니 다.
포맷 문자열
형식 문자열 은 내용 이 실 행 될 때 동적 으로 확인 할 수 있 는 문자열 입 니 다.다음 방식 으로 형식 문자열 을 만 듭 니 다.정적 Format 방법 을 사용 하고 괄호 에 자리 표시 자 를 삽입 합 니 다.이 자리 표시 자 는 실행 할 때 다른 값 으로 대 체 됩 니 다.
private static void Main(string[] args)
{
const string name = "Fanguzai";
var s = string.Format("Hi, {0}!", name); //
Console.WriteLine(s);
Console.Read();
}
연산 자 문자열
하위 문자열 은 문자열 에 포 함 된 임의의 문자 시퀀스 입 니 다.Substring 방법 을 사용 하면 원본 문자열 의 일부분 을 기반 으로 새 문자열 을 만 들 수 있 습 니 다.하위 문자열 의 하나 이상 의 일치 하 는 항목 을 Index Of 방법 으로 검색 할 수 있 습 니 다.Replace 방법 을 사용 하면 지정 한 하위 문자열 의 모든 일치 항목 을 새 문자열 로 바 꿀 수 있 습 니 다.Substring 방법 과 마찬가지 로 Replace 는 실제 문자열 을 수정 하지 않 고 새 문자열 을 되 돌려 줍 니 다.
private static void Main(string[] args)
{
const string s1 = "Hi, Fanguzai!";
Console.WriteLine(s1.Substring(4)); //
Console.WriteLine(s1.Replace("Hi","Hello")); //
Console.WriteLine(s1.IndexOf(",", StringComparison.Ordinal)); //
Console.Read();
}
문자열 의 null 과"(비어 있 음)
빈 문자열 은 문 자 를 포함 하지 않 는 System.String 대상 의 인 스 턴 스 입 니 다.각종 프로 그래 밍 방안 에 서 는 빈 문자열 을 사용 하여 빈 텍스트 필드 를 표시 합 니 다.유효한 System.string 대상 이기 때문에 빈 문자열 을 호출 할 수 있 습 니 다.
var s = string.Empty;
반면 null 문자열 은 System.String 대상 의 인 스 턴 스 를 참조 하지 않 습 니 다.null 문자열 호출 방법 에 대한 모든 시 도 는 Null Reference Exception 을 생 성 합 니 다.단,직렬 연결 과 비교 작업 에서 null 문자열 을 다른 문자열 과 함께 사용 할 수 있 습 니 다.
private static void Main(string[] args)
{
const string s1 = "Hi, Fanguzai!";
string s2 = null;
var s3 = string.Empty;
var s4 = s1 + s2; // null
Console.WriteLine("s4: {0}", s4);
Console.WriteLine("");
var isTrue = (s2 == s3);
Console.WriteLine("isTrue: {0}", isTrue);
Console.WriteLine();
var s5 = s3 + s2;
Console.WriteLine("s5: {0}", s5);
Console.WriteLine();
Console.Read();
}
성능 향상 을 위 한 StringBuilder
.NET 의 문자열 작업 이 고도 로 최적화 되 어 대부분의 경우 성능 에 현저 한 영향 을 주지 않 습 니 다.그러나 일부 응용 장면 에서 예 를 들 어 수백,심지어 몇 억 번 의 순환 을 수행 하 는 과정 에서 문자열 작업 은 성능 에 영향 을 줄 수 있다.StringBuilder 클래스 는 프로그램 이 대량의 문자열 작업 을 수행 할 때 더 좋 은 성능 을 제공 하 는 문자열 버퍼 를 만 들 었 습 니 다.StringBuilder 문자열 은 개별 문 자 를 재배 치 할 수 있 습 니 다.(내 장 된 문자열 데이터 형식 이 지원 하지 않 는 문자)예 를 들 어 이 코드 는 새 문자열 을 만 들 지 않 은 상태 에서 문자열 의 내용 을 변경 하 였 습 니 다.
static void Main(string[] args)
{
var sb = new StringBuilder("~ Hi! Fanguzai!");
sb[0] = '^';
Console.WriteLine(sb);
Console.Read();
}
이상 은 본 고의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.또한 저 희 를 많이 지지 해 주시 기 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.