有没有办法(出于好奇,因为我今天遇到了多个相同值的多个变量赋值)在C#中在一个语句中一次为多个变量分配一个值?
沿着这些方向的东西(伪代码):
int num1 = 1;
int num2 = 1;
num1 & num2 = 5;
可能不是,但我觉得值得问一下类似的事情是否真的可能!
答案 0 :(得分:226)
这很简单:
num1 = num2 = 5;
当使用对象属性而不是变量时,有趣的是知道不调用中间值的get
访问器。仅为分配序列中访问的所有属性调用set
访问器。
以每次调用get
和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;
}
}
}
这将输出
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 = 1
,b = 2
和c = 3
。全部在一行中。
答案 10 :(得分:1)
很简单。
int num1,num2;
num1 = num2 = 5;