답변:
다음과 같이 간단합니다.
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
컴파일러가 모든 속성에 값을 할당하고 할당 될 때마다 값을 다시 읽지 않음을 의미합니다.
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";
구문이 조금 더 짧지 만 다른 사람들이 이미 말한 것을 취합니다.
int num1, num2 = num1 = 1;
이 시도:
num1 = num2 = 5;
VB에서는 작동하지 않습니다.
=대입과 평등에 모두 사용되므로 num1 = num2 = 5"5가 num2변수와 같은지 여부에 대한 부울 결과 할당"을 의미합니다 num1. 때문에 =오퍼레이터는 두 가지 의미를 가지고,이 구문을 나타낼 수있는 방법이 없다. 당신이 할 수있는 최선의 방법은 byref값뿐만 아니라 많은 매개 변수를 취하고 모든 매개 변수를 해당 값에 할당 하는 함수를 만드는 것입니다 .
num1 = (num2 = 5)과 같습니다. 첫 번째로 실행 된 할당 (num2 = 5)은 값 5를 외부 세계에 반환합니다.이 할당은 num1에 할당됩니다. 이것은 무한대로 작동합니다 (num0 = num1 = num2 = 5).