С#: присвоить одно значение нескольким переменным в одном выражении

Есть ли какой-либо способ (просто из любопытства, потому что я столкнулся с несколькими присвоениями одинаковых значений для множества переменных сегодня) в С#, чтобы сразу назначить одно значение нескольким переменным в одном выражении?

Что-то в этих строках (псевдокод):

int num1 = 1;
int num2 = 1;

num1 & num2 = 5;

Наверное, нет, но я подумал, что стоит попробовать, если на самом деле возможно что-то подобное!

Ответ 1

Это просто:

num1 = num2 = 5;

При использовании свойства объекта вместо переменной интересно узнать, что аксессор get промежуточного значения не вызывается. Для доступа к свойствам, доступным в последовательности назначения, вызывается только set accessor.

Возьмем, например, класс, который записывается в консоль каждый раз, когда вызывается get и set accessor.

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;
        }
    }
}

Это приведет к выводу

AccessorTest.Value.get 5
AccessorTest.Value.set 5
AccessorTest.Value.set 5

Значение того, что компилятор присваивает значение всем свойствам, и он не будет перечитывать значение каждый раз, когда он назначен.

Ответ 2

Это будет желать:

int num1, num2;
num1 = num2 = 5;

'num2 = 5' присваивание возвращает возвращаемое значение.

Это позволяет вам делать сумасшедшие вещи, такие как num1 = (num2 = 5) +3;, которые будут назначать 8 для num1, хотя я бы не рекомендовал делать это как не очень читаемый.

Ответ 3

int num1=5,num2=5

Объявление и назначение переменных в одном выражении.

Ответ 4

Попробуйте следующее:

num1 = num2 = 5;

Обратите внимание, что это не будет работать в VB.

Ответ 5

num1 = num2 = 5

Ответ 6

int num1, num2, num3;

num1 = num2 = num3 = 5;

Console.WriteLine(num1 + "=" + num2 + "=" + num3);    // 5=5=5

Ответ 7

Что-то вроде этого.

num1 = num2 = 5

Ответ 8

Ваш пример:

int num1 = 1;
int num2 = 1;

num1 = num2 = 5;

Ответ 9

Что-то немного короче в синтаксисе, но принимая то, что уже заявили другие.

int num1, num2 = num1 = 1;

Ответ 10

Это просто.

int num1,num2;
num1 = num2 = 5;