String.IsInterned メソッド
指定した String への参照を取得します。
Public Shared Function IsInterned( _
ByVal str As String _) As String
[C#]
public static string IsInterned(stringstr);
[C++]
public: static String* IsInterned(String* str);
[JScript]
public static function IsInterned(
str : String) : String;
パラメータ
- str
String 。
戻り値
str が共通言語ランタイムの "インターン プール" 内にある場合は、 str への String 参照。それ以外の場合は null 参照 (Visual Basic では Nothing) 。
例外
例外の種類 | 条件 |
---|---|
ArgumentNullException | str が null 参照 (Visual Basic では Nothing) です。 |
解説
共通言語ランタイムは、"インターン プール" と呼ばれるテーブルを自動的に管理します。このテーブルには、プログラムで宣言された各リテラル文字列定数の単一インスタンスと、プログラムを使用して追加した String の一意のインスタンスが格納されています。
インターン プールでは、文字列の格納域が維持されます。リテラル文字列定数を複数の変数に割り当てると、各変数が、同一値を持つ異なる String インスタンスではなく、インターン プールの同一定数を参照するように設定されます。
このメソッドは、インターン プールで str を検索します。 str が既に確保されている場合は、そのインスタンスへの参照が返されます。それ以外の場合は null 参照 (Visual Basic では Nothing) が返されます。
このメソッドと Intern メソッドを比較します。
このメソッドは Boolean 値を返しませんが、Boolean 値が必要な場合でも使用できます。
使用例
' 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.
'
[C#]
// 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.
*/
[C++]
// Sample for String::IsInterned(String)
#using <mscorlib.dll>
using namespace System;
using namespace System::Text;
void Test(int sequence, String* str) {
Console::Write(S"{0} The string '", __box(sequence));
String* strInterned = String::IsInterned(str);
if (strInterned == 0)
Console::WriteLine(S"{0}' is not interned.", str);
else
Console::WriteLine(S"{0}' is interned.", strInterned);
}
int main() {
// String str1 is known at compile time, and is automatically interned.
String* str1 = S"abcd";
// Constructed string, str2, is not explicitly or automatically interned.
String* str2 = (new StringBuilder())->Append(S"wx")->Append(S"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.
*/
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard