다음을 통해 공유


String.IsInterned 메서드

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

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

구문

‘선언
Public Shared Function IsInterned ( _
    str As String _
) As String
‘사용 방법
Dim str As String
Dim returnValue As String

returnValue = String.IsInterned(str)
public static string IsInterned (
    string str
)
public:
static String^ IsInterned (
    String^ str
)
public static String IsInterned (
    String str
)
public static function IsInterned (
    str : String
) : String

매개 변수

반환 값

공용 언어 런타임 "내부 풀"에 있으면 str에 대한 String 참조를 반환하고, 그렇지 않으면 Null 참조(Visual Basic의 경우 Nothing)를 반환합니다.

예외

예외 형식 조건

ArgumentNullException

str가 Null 참조(Visual Basic의 경우 Nothing)인 경우

설명

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

내부 풀에는 문자열이 저장됩니다. 여러 변수에 리터럴 문자열 상수를 할당하면 각 변수는 동일한 값을 갖는 String의 여러 인스턴스를 참조하는 대신 내부 풀에 있는 동일한 상수를 참조합니다.

이 메서드는 내부 풀에서 str를 찾아 str가 이미 내부 풀에 추가되었으면 해당 인스턴스에 대한 참조를 반환하고, 그렇지 않으면 Null 참조(Visual Basic의 경우 Nothing)를 반환합니다.

이 메서드와 Intern 메서드를 비교해 보십시오.

이 메서드는 부울 값을 반환하지 않지만 부울이 필요한 경우에 사용할 수는 있습니다.

예제

다음 코드 예제에서는 리터럴 문자열이 컴파일러에 의해 자동으로 내부 풀에 추가되는 방법을 보여 줍니다.

' Sample for String.IsInterned(String)
Imports System
Imports System.Text

Class Sample
   Public Shared Sub Main()
      ' String str1 is known at compile time, and is automatically interned.
      Dim str1 As [String] = "abcd"
      
      ' Constructed string, str2, is not explicitly or automatically interned.
      Dim str2 As [String] = New StringBuilder().Append("wx").Append("yz").ToString()
      Console.WriteLine()
      Test(1, str1)
      Test(2, str2)
   End Sub 'Main
   
   Public Shared Sub Test(sequence As Integer, str As [String])
      Console.Write("{0}) The string, '", sequence)
      Dim strInterned As [String] = [String].IsInterned(str)
      If strInterned Is Nothing Then
         Console.WriteLine("{0}', is not interned.", str)
      Else
         Console.WriteLine("{0}', is interned.", strInterned)
      End If
   End Sub 'Test
End Class 'Sample '
'This example produces the following results:
'
'1) The string, 'abcd', is interned.
'2) The string, 'wxyz', is not interned.
'
// Sample for String.IsInterned(String)
using System;
using System.Text;

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.
*/
// Sample for String::IsInterned(String)
using namespace System;
using namespace System::Text;
void Test( int sequence, String^ str )
{
   Console::Write( "{0} The string '", sequence );
   String^ strInterned = String::IsInterned( str );
   if ( strInterned == nullptr )
      Console::WriteLine( "{0}' is not interned.", str );
   else
      Console::WriteLine( "{0}' is interned.", strInterned );
}

int 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 = (gcnew StringBuilder)->Append( "wx" )->Append( "yz" )->ToString();
   Console::WriteLine();
   Test( 1, str1 );
   Test( 2, str2 );
}

/*
This example produces the following results:

1) The string 'abcd' is interned.
2) The string 'wxyz' is not interned.
*/
// Sample for String.IsInterned(String)
import System.*;
import System.Text.*;

class Sample
{
    public static void main(String[] args)
    {
        // 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);
    } //main

    public static void Test(int sequence, String str)
    {
        Console.Write("{0}) The string, '", System.Convert.ToString(sequence));
        String strInterned = String.IsInterned(str);
        if (strInterned == null) {
            Console.WriteLine("{0}', is not interned.", str);
        }
        else {
            Console.WriteLine("{0}', is interned.", strInterned);
        }
    } //Test
} //Sample 
 /*
This example produces the following results:

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

플랫폼

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

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

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0, 1.0에서 지원

참고 항목

참조

String 클래스
String 멤버
System 네임스페이스
Intern