visual - C#: Atribuir o mesmo valor a várias variáveis na declaração única
metodos c# (7)
É simples.
int num1,num2;
num1 = num2 = 5;
Existe alguma maneira (apenas por curiosidade porque me deparei com várias atribuições de mesmo valor para múltiplas variáveis hoje) em C # para atribuir um valor a várias variáveis de uma só vez em uma única instrução?
Algo ao longo destas linhas (pseudocódigo):
int num1 = 1;
int num2 = 1;
num1 & num2 = 5;
Provavelmente não, mas achei que valeria a pena pedir no caso de algo similar ser realmente possível!
É tão simples como:
num1 = num2 = 5;
Ao usar uma propriedade de objeto em vez de variável, é interessante saber que o acessador get
do valor intermediário não é chamado. Apenas o acessador set
é chamado para todas as propriedades acessadas na sequência de designação.
Tomemos, por exemplo, uma classe que grava no console sempre que o acessador get
e set
for invocado.
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;
}
}
}
Isto irá produzir
AccessorTest.Value.get 5
AccessorTest.Value.set 5
AccessorTest.Value.set 5
Isso significa que o compilador atribuirá o valor a todas as propriedades e não relerá o valor toda vez que for atribuído.
Algo um pouco mais curto na sintaxe, mas tomando o que os outros já afirmaram.
int num1, num2 = num1 = 1;
Isso vai querer que você queira:
int num1, num2;
num1 = num2 = 5;
A atribuição 'num2 = 5' retornará o valor atribuído.
Isso permite que você faça coisas malucas como num1 = (num2 = 5) +3;
que irá atribuir 8 a num1, embora eu não recomendaria fazê-lo como não ser muito legível.
Tente isto:
num1 = num2 = 5;
Observe que isso não funcionará no VB.
num1 = num2 = 5
int num1=5,num2=5
Declarando e atribuindo variáveis na mesma instrução.