Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo ConditionalWeakTable<TKey, TValue>.TryGetValue (TKey, TValue)

 

Data di pubblicazione: ottobre 2016

Ottiene il valore della chiave specificata.

Spazio dei nomi:   System.Runtime.CompilerServices
Assembly:  mscorlib (in mscorlib.dll)

public bool TryGetValue(
	TKey key,
	out TValue value
)

Parametri

key
Type: TKey

La chiave che rappresenta un oggetto con una proprietà associata.

value
Type: TValue

Quando questo metodo viene restituito, contiene il valore della proprietà associata. Se key non viene trovato, value contiene il valore predefinito.

Valore restituito

Type: System.Boolean

true se l'oggetto key viene trovato. In caso contrario, false.

Exception Condition
ArgumentNullException

key è null.

Se la chiave è sottoposto a garbage collection durante questa operazione, il metodo può restituire false e impostare value sul valore predefinito (come se la chiave non erano presente).

L'esempio seguente definisce un MainClass classe e un MainInfo classe, che fornisce informazioni sui MainClass istanza. Nell'esempio viene chiamato il Add, GetOrCreateValue, e GetValue metodi per aggiungere coppie chiave/valore da un ConditionalWeakTable<TKey, TValue> tabella. In ogni caso, viene chiamato il TryGetValue metodo per confermare che la coppia chiave/valore è stato aggiunto alla tabella.

using System;
using System.Reflection;
using System.Runtime.CompilerServices;

public class Example
{
   string Name; 

   public Example(string name)
   {
      this.Name = name;
   }

   public override string ToString()
   {
      return this.Name;
   }
}

// Define a class to contain information about each Example instance.
public class ExampleInfo
{
   public string Name;
   public int Methods;
   public int Properties;

   public override string ToString()
   {
      return String.Format("{0}: {1} Methods, {2} Properties", 
                           this.Name, this.Methods, this.Properties);
   }
}

public class ExampleTest
{
   private static BindingFlags flags = BindingFlags.Public | BindingFlags.Instance;

   public static void Main()
   {
      Example ex1 = new Example("ex1");
      Example ex2 = new Example("ex2");
      Example ex3 = new Example("ex3");

      ExampleInfo exInfo1 = new ExampleInfo(); 
      exInfo1.Name = ex1.ToString();
      exInfo1.Methods = ex1.GetType().GetMethods(flags).Length;
      exInfo1.Properties = ex1.GetType().GetProperties(flags).Length;

      ExampleInfo exInfo3 = new ExampleInfo(); 
      exInfo3.Name = ex3.ToString();
      exInfo3.Methods = ex3.GetType().GetMethods(flags).Length;
      exInfo3.Properties = ex3.GetType().GetProperties(flags).Length;

      var attached = new ConditionalWeakTable<Example, ExampleInfo>();
      ExampleInfo value = null;

      // Attach a property to ex1 using the Add method, then retrieve it.
      attached.Add(ex1, exInfo1);
      if (attached.TryGetValue(ex1, out value))
         Console.WriteLine("{0}, {1}", ex1, value);
      else
         Console.WriteLine("{0} does not have an attached property.", ex1);

      // Attempt to retrieve the value attached to ex2.
      value = attached.GetValue(ex2, ExampleTest.CreateAttachedValue);      
      if (attached.TryGetValue(ex2, out value))
         Console.WriteLine("{0}, {1}", ex2, value);
      else 
         Console.WriteLine("{0} does not have an attached property.", ex2);

      // Attempt to retrieve the value attached to ex3.
      value = attached.GetOrCreateValue(ex3);
      Console.WriteLine("{0}, {1}", ex3, value);
   }

   public static ExampleInfo CreateAttachedValue(Example ex)
   {
      ExampleInfo info = new ExampleInfo();
      info.Name = ex.ToString();
      info.Methods = ex.GetType().GetMethods(flags).Length;
      info.Properties = ex.GetType().GetProperties(flags).Length;
      return info;
   }
}
// The example displays the following output:
//       ex1, ex1: 4 Methods, 0 Properties
//       ex2, ex2: 4 Methods, 0 Properties
//       ex3, : 0 Methods, 0 Properties

SecurityCriticalAttribute

requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 4.0
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 4.0
Windows Phone Silverlight
Disponibile da 8.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: