C#:在单个语句中为多个变量赋值


C#: Assign same value to multiple variables in single statement

在C中是否有任何方法(只是出于好奇,因为我今天遇到了对多个变量的多个相同值赋值)在一个语句中一次将一个值赋给多个变量?

沿着这些线的东西(伪代码):

1
2
3
4
int num1 = 1;
int num2 = 1;

num1 & num2 = 5;

可能不是,但我认为这是值得问的,以防类似的事情实际上是可能的!


它很简单:

1
num1 = num2 = 5;

当使用对象属性而不是变量时,有趣的是要知道中间值的get访问器没有被调用。对于分配序列中访问的所有属性,只调用set访问器。

例如,每当调用getset访问器时,都会写入控制台的类。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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;
        }
    }
}

这将输出

1
2
3
AccessorTest.Value.get 5
AccessorTest.Value.set 5
AccessorTest.Value.set 5

这意味着编译器将为所有属性分配该值,并且不会在每次分配该值时重新读取该值。


这将是您想要的:

1
2
int num1, num2;
num1 = num2 = 5;

"num2=5"赋值将返回赋值。

这允许你做一些疯狂的事情,比如num1 = (num2 = 5) +3;,它将8分配给num1,尽管我不建议这样做,因为它不太可读。


1
int num1=5,num2=5

在同一语句中声明和分配变量。


试试这个:

1
num1 = num2 = 5;

请注意,这在VB中不起作用。


NUM1= NUM2=5


像这样。

1
num1 = num2 = 5


1
2
3
4
5
int num1, num2, num3;

num1 = num2 = num3 = 5;

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

在句法上稍短一点,但采用了其他人已经说过的话。

1
int num1, num2 = num1 = 1;

你的例子是:

1
2
3
4
int num1 = 1;
int num2 = 1;

num1 = num2 = 5;

这很简单。

1
2
int num1,num2;
num1 = num2 = 5;