C\#의 string 과 String 을 자세히 설명 합 니 다.

8931 단어 C#stringString
목차
  • 소문 자 string 과 대문자 String
  • string 성명 및 초기 화
  • string 의 불변성
  • 정규 string 과 원 의 string
  • string 의 전의 서열
  • 포맷 문자열
  • 하위 문자열 조작
  • 문자열 의 null 과"(비어 있 음)
  • 성능 향상 을 위 한 StringBuilder 
  • 순서.
    문자열 은 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();
        }
    

    이상 은 본 고의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.또한 저 희 를 많이 지지 해 주시 기 바 랍 니 다!

    좋은 웹페이지 즐겨찾기