【发布时间】:2010-11-28 00:03:13
【问题描述】:
在 C# 中有什么方法(只是出于好奇,因为我今天遇到了多个相同的值赋值给多个变量)在单个语句中一次将一个值赋值给多个变量?
类似的东西(伪代码):
int num1 = 1;
int num2 = 1;
num1 & num2 = 5;
可能不会,但我认为值得一问,以防类似的事情实际上是可能的!
【问题讨论】:
标签: c#
在 C# 中有什么方法(只是出于好奇,因为我今天遇到了多个相同的值赋值给多个变量)在单个语句中一次将一个值赋值给多个变量?
类似的东西(伪代码):
int num1 = 1;
int num2 = 1;
num1 & num2 = 5;
可能不会,但我认为值得一问,以防类似的事情实际上是可能的!
【问题讨论】:
标签: c#
很简单:
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
意思是编译器会为所有的属性赋值,并且不会在每次赋值时都重新读取。
【讨论】:
num1 = (num2 = 5),执行的第一个赋值 (num2 = 5) 将值 5 返回给外部世界 - 依次赋值给 num1。这无限地有效(num0 = num1 = num2 = 5)。
Console.WriteLine(num = 5);。 (免责声明:我还没有)
num1 = num2 = 5?如果涉及更多变量,它是否会使代码不可读?很抱歉劫持,我不想为此创建一个新帖子。
这将是你想要的:
int num1, num2;
num1 = num2 = 5;
'num2 = 5' 赋值将返回赋值。
这让你可以做一些疯狂的事情,比如num1 = (num2 = 5) +3;,它将 8 分配给 num1,虽然我不建议这样做,因为它的可读性不是很好。
【讨论】:
int num1=5,num2=5
在同一语句中声明和分配变量。
【讨论】:
string a = "really long string", b = "really long string";
语法稍短一些,但采用其他人已经说过的内容。
int num1, num2 = num1 = 1;
【讨论】:
试试这个:
num1 = num2 = 5;
请注意,这在 VB 中不起作用。
【讨论】:
= 用于赋值和相等,所以 num1 = num2 = 5 的意思是“将 5 是否等于 num2 的布尔结果赋值给变量 @987654325 @"。因为= 运算符有这两种含义,所以没有办法表示这种语法。您可以做的最好的事情是创建一个函数,该函数接受多个参数byref 以及一个值并将所有参数分配给该值。
这现在是 C# 中的一个东西:
var (a, b, c) = (1, 2, 3);
通过上述操作,您基本上已经声明了三个变量。 a = 1、b = 2 和 c = 3。全部在一行中。
【讨论】:
num1 = num2 = 5
【讨论】:
你的例子是:
int num1 = 1;
int num2 = 1;
num1 = num2 = 5;
【讨论】:
int num1, num2, num3;
num1 = num2 = num3 = 5;
Console.WriteLine(num1 + "=" + num2 + "=" + num3); // 5=5=5
【讨论】:
类似的东西。
num1 = num2 = 5
【讨论】:
很简单。
int num1, num2;
num1 = num2 = 5;
【讨论】: