이 문서는 기계 번역을 이용하여 번역되었습니다. 문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

String.IsInterned 메서드 (String)

 

게시 날짜: 2016년 11월

지정된 String에 대한 참조를 검색합니다.

네임스페이스:   System
어셈블리:  mscorlib(mscorlib.dll에 있음)

public static string IsInterned(
	string str
)

매개 변수

str
Type: System.String

내부 풀에서 검색할 문자열입니다.

반환 값

Type: System.String

str이 공용 언어 런타임 내부 풀에 있으면 해당 참조이고, 그러지 않으면 null입니다.

Exception Condition
ArgumentNullException

strnull인 경우

공용 언어 런타임에서 자동으로 테이블을 유지 하는데의 모든 고유 인스턴스를 비롯 하 여 프로그램에 선언 된 각 고유한 리터럴 문자열 상수의 단일 인스턴스를 포함 하는 내부 풀 이라는 String 호출 하 여 프로그래밍 방식으로 추가 된 Intern 메서드.

내부 풀 문자열 저장소를 절약합니다. 각 변수는 내부 풀의 여러 인스턴스를 참조 하는 대신에 동일한 상수 참조로 설정 됩니다 여러 변수에 리터럴 문자열 상수를 할당 하는 경우 String 동일한 값을 갖는 합니다.

이 메서드를 찾습니다 str 내부 풀에 있습니다. 경우 str 가 이미 반환 되 고, 그렇지 않으면 해당 인스턴스에 대 한 참조는 풀 null 반환 됩니다.

Intern 메서드.

이 메서드는 부울 값을 반환 하지 않습니다. 특정 문자열은 인턴 지정 하는지 여부를 나타내는 부울 값을 반환 하기 때문에 메서드를 호출 하는 경우에 다음과 같은 코드를 사용할 수 있습니다.

using System;

public class Example
{
   public static void Main()
   {
      string str1 = "a";
      string str2 = str1 + "b";
      string str3 = str2 + "c";
      string[] strings = { "value", "part1" + "_" + "part2", str3, 
                           String.Empty, null };
      foreach (var value in strings) {
         if (value == null) continue;

         bool interned = String.IsInterned(value) != null;
         if (interned)
            Console.WriteLine("'{0}' is in the string intern pool.", 
                              value);
         else
            Console.WriteLine("'{0}' is not in the string intern pool.",
                              value);                      
      }
   }
}
// The example displays the following output:
//       'value' is in the string intern pool.
//       'part1_part2' is in the string intern pool.
//       'abc' is not in the string intern pool.
//       '' is in the string intern pool.
System_CAPS_note참고

.NET Framework 버전 2.0 부터는 재정의할 수 있습니다는 내부 풀의 사용 하 여 사용 하는 경우는 Ngen.exe(네이티브 이미지 생성기) 로컬 컴퓨터의 네이티브 이미지 캐시에는 어셈블리를 설치 합니다. 자세한 내용은 설명 부분을의 성능 고려 사항을 참조는 Intern 속성입니다.

다음 예에서는 리터럴 문자열 컴파일러에 의해 자동으로 수행 됩니다 하는 방법을 보여 줍니다.

// Sample for String.IsInterned(String)
using System;
using System.Text;
using System.Runtime.CompilerServices;

// In the .NET Framework 2.0 the following attribute declaration allows you to 
// avoid the use of the interning when you use NGEN.exe to compile an assembly 
// to the native image cache.
[assembly: CompilationRelaxations(CompilationRelaxations.NoStringInterning)]
class Sample
{
    public static void Main()
    {
        // String str1 is known at compile time, and is automatically interned.
        String str1 = "abcd";

        // Constructed string, str2, is not explicitly or automatically interned.
        String str2 = new StringBuilder().Append("wx").Append("yz").ToString();
        Console.WriteLine();
        Test(1, str1);
        Test(2, str2);
    }

    public static void Test(int sequence, String str)
    {
        Console.Write("{0}) The string, '", sequence);
        String strInterned = String.IsInterned(str);
        if (strInterned == null)
            Console.WriteLine("{0}', is not interned.", str);
        else
            Console.WriteLine("{0}', is interned.", strInterned);
    }
}

//This example produces the following results:

//1) The string, 'abcd', is interned.
//2) The string, 'wxyz', is not interned.

//If you use NGEN.exe to compile the assembly to the native image cache, this
//example produces the following results:

//1) The string, 'abcd', is not interned.
//2) The string, 'wxyz', is not interned.

.NET Framework
1.1 이후 사용 가능
Silverlight
2.0 이후 사용 가능
Windows Phone Silverlight
7.0 이후 사용 가능
맨 위로 이동
표시: