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

时间:2009-09-14 00:55:30

标签: c#

有没有办法(出于好奇,因为我今天遇到了多个相同值的多个变量赋值)在C#中在一个语句中一次为多个变量分配一个值?

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

int num1 = 1;
int num2 = 1;

num1 & num2 = 5;

可能不是,但我觉得值得问一下类似的事情是否真的可能!

11 个答案:

答案 0 :(得分:226)

这很简单:

num1 = num2 = 5;

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

以每次调用getset访问器时写入控制台的类为例。

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

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

答案 1 :(得分:53)

这确实是你想要的:

int num1, num2;
num1 = num2 = 5;

'num2 = 5'赋值将返回指定的值。

这允许你做一些疯狂的事情,比如num1 = (num2 = 5) +3;,它会将8分配给num1,虽然我不建议这样做,因为它不是非常易读。

答案 2 :(得分:30)

int num1=5,num2=5

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

答案 3 :(得分:11)

试试这个:

num1 = num2 = 5;

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

答案 4 :(得分:7)

num1 = num2 = 5

答案 5 :(得分:5)

int num1, num2, num3;

num1 = num2 = num3 = 5;

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

答案 6 :(得分:5)

像这样。

num1 = num2 = 5

答案 7 :(得分:4)

你的例子是:

int num1 = 1;
int num2 = 1;

num1 = num2 = 5;

答案 8 :(得分:4)

语法略短一些,但采取其他人已经说过的内容。

int num1, num2 = num1 = 1;

答案 9 :(得分:2)

现在这是C#中的东西:

var (a, b, c) = (1, 2, 3);

通过上述操作,您基本上已经声明了三个变量。 a = 1b = 2c = 3。全部在一行中。

答案 10 :(得分:1)

很简单。

int num1,num2;
num1 = num2 = 5;