Exportar (0) Imprimir
Expandir todo
Expandir Minimizar
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

String.IsInterned (Método)

Recupera una referencia a un objeto String especificado.

Espacio de nombres:  System
Ensamblado:  mscorlib (en mscorlib.dll)

public static string IsInterned(
	string str
)

Parámetros

str
Tipo: System.String
Cadena que se va a buscar en el grupo de internos.

Valor devuelto

Tipo: System.String
Una referencia a str si está en el grupo de internos de Common Language Runtime; de lo contrario, null.

ExcepciónCondición
ArgumentNullException

str es null.

Common Language Runtime automáticamente mantiene una tabla, con el conjunto de interno, que contiene una única instancia de cada constante única de la cadena literal declarada en un programa, así como cualquier instancia única de String que agrega mediante programación llamando al método de Intern .

La agrupación interna conserva el almacenamiento de cadenas. Si se asigna una constante de cadena literal a varias variables, cada variable se establecerá de forma que haga referencia a la misma constante de la agrupación interna en lugar de que haga referencia a varias instancias diferentes de String que tengan valores idénticos.

Este método busca str en la agrupación interna. Si ya se ha aplicado el método Intern a str, se devuelve una referencia a la instancia en cuestión; en caso contrario, se devuelve null.

Compare este método con el método Intern.

Este método no devuelve un valor booleano. Si llama al método porque desea un valor booleano que indica si una cadena concreta está encerrado, puede utilizar código como el siguiente.


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.


NotaNota

A partir de la versión 2.0 de .NET Framework, se puede reemplazar el uso de la agrupación interna cuando se utiliza Ngen.exe (Generador de imágenes nativas) para instalar un ensamblado en la caché de imágenes nativas en un equipo local. Para obtener más información, vea Consideraciones sobre el rendimiento en la sección Comentarios del método Intern.

En el ejemplo siguiente se muestra que el compilador aplica automáticamente el método Intern a las cadenas literales.


// 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

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

.NET para aplicaciones de Windows Phone

Compatible con: 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 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft