Answers:
就像这样简单:
num1 = num2 = 5;
当使用对象属性而不是变量时,有趣的是知道get
没有调用中间值的访问器。只有set
对于分配序列中访问的所有属性,调用访问器。
例如,一个在每次调用get
and 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
这意味着编译器会将值分配给所有属性,并且每次分配时都不会重新读取该值。
Console.WriteLine(num = 5);
。(免责声明:我尚未)
num1 = num2 = 5
吗?如果涉及更多变量,是否会使代码变得不可读?很抱歉,我不想为此而创建一个新帖子。
这确实要您想要:
int num1, num2;
num1 = num2 = 5;
“ num2 = 5”分配将返回分配的值。
这使您可以做一些疯狂的事情,例如num1 = (num2 = 5) +3;
将num1分配为8,尽管我不建议这样做,因为它不易读。
int num1=5,num2=5
在同一条语句中声明和分配变量。
string a = "really long string", b = "really long string";
试试这个:
num1 = num2 = 5;
请注意,这在VB中不起作用。
=
用于赋值和相等性,因此num1 = num2 = 5
意味着“赋值布尔值是否等于5等于num2
变量num1
”。由于=
运算符具有这两种含义,因此无法表示此语法。最好的办法是创建一个函数,该函数接受多个参数byref
以及一个值,并将所有参数分配给该值。
很简单。
int num1,num2;
num1 = num2 = 5;
num1 = (num2 = 5)
并且执行的第一个赋值(num2 = 5
)将值5返回给外界-依次将其赋给num1。此功能可无限进行(num0 = num1 = num2 = 5
)。