정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

String.IsInterned 메서드

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

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

public static string IsInterned(
	string str
)

매개 변수

str
형식: System.String
내부 풀에서 검색할 문자열입니다.

반환 값

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

예외조건
ArgumentNullException

strnull입니다.

공용 언어 런타임에서는 내부 풀이라는 테이블을 자동으로 유지하는데, 이 테이블에는 사용자가 프로그래밍 방식으로 Intern 를 호출함으로써 추가한 String 의 모든 고유한 인스턴스 및 프로그램에서 선언된 고유한 각 리터럴 문자열 상수의 인스턴스가 하나씩 들어 있습니다.

내부 풀에는 문자열이 저장됩니다. 여러 변수에 리터럴 문자열 상수를 할당하면 각 변수는 동일한 값을 갖는 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.


참고참고

.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

4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0에서 지원

.NET Framework Client Profile

4, 3.5 SP1에서 지원

Windows Phone 앱용 .NET

Windows Phone 8, Silverlight 8.1에서 지원

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008(서버 코어 역할은 지원되지 않음), Windows Server 2008 R2(서버 코어 역할은 SP1 이상에서 지원, Itanium은 지원되지 않음)

.NET Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

커뮤니티 추가 항목

표시:
© 2014 Microsoft