È semplice come:
num1 = num2 = 5;
Quando si utilizza una proprietà dell'oggetto anziché variabile, è interessante sapere che il get
di accesso del valore intermedio non viene chiamato. Solo l'accessor set
viene richiamato per tutte le proprietà a cui si accede nella sequenza di assegnazione.
Prendere ad esempio una classe che scrive sulla console ogni volta che vengono richiamati gli accessor get
e set
.
static void Main(string[] args)
{
var accessorSource = new AccessorTest(5);
var accessor1 = new AccessorTest();
var accessor2 = new AccessorTest();
accessor1.Value = accessor2.Value = accessorSource.Value;
Console.ReadLine();
}
public class AccessorTest
{
public AccessorTest(int value = default(int))
{
_Value = value;
}
private int _Value;
public int Value
{
get
{
Console.WriteLine("AccessorTest.Value.get {0}", _Value);
return _Value;
}
set
{
Console.WriteLine("AccessorTest.Value.set {0}", value);
_Value = value;
}
}
}
Questa volontà uscita
AccessorTest.Value.get 5
AccessorTest.Value.set 5
AccessorTest.Value.set 5
che significa che il compilatore assegna il valore di tutte le proprietà e non sarà riletto il valore ogni volta che viene assegnato.
fonte
2009-09-14 00:57:01
Sembra strano ma funziona!Grazie;) – Alex
Basta leggerlo come appare: num1 è uguale a num2 che equivale a 5 –
In realtà non è strano. La logica è la seguente: L'operazione di assegnazione stessa restituisce un valore, che è il valore che è stato assegnato. La sequenza di esecuzione è: '' num1 = (num2 = 5) '' e il primo compito che viene eseguito ('' num2 = 5'') restituisce il valore 5 al mondo esterno - che a sua volta è assegnato a num1. Funziona ad infinitum ('' num0 = num1 = num2 = 5''). – Jpsy