2010-01-07 3 views
0

을 사용할 때마다 'foo'는 어떻게 설정됩니까? 나는 온라인 검색 한하지만 난 나에게 답을주는 그 어디서든 찾을 수 없습니다 : == 대신 부울 표현식 =의아래의 예제에서 C# 부울 표현

static void Main(string[] args) { 
    static public bool abc = true; 
    static public bool foo = (abc = false); 
    foo = (abc = true); 
} 
+0

이러한 상황에서는 코드를 실행하고 확인하는 것이 쉽습니다. – Ant

+0

검색하려는 장소는 사양의 섹션 7.16.1입니다. –

답변

8

false 처음으로 true 두 번째로. =은 할당 연산자입니다. 두 번째 피연산자의 값을 첫 번째 피연산자에 할당 한 다음이 값을 반환합니다. 예를 들면 :는

int foo = 1; 
int bar = (foo = 2); 

번째 라인은 여기에 2 foo 다음 줄에 2를 할당하는 다른 할당 연산자, 2를 반환 할당한다. 모든의 끝에서, 모두 foobar는 값이 2

편집 :은 체인까지 할당 작업에 유효한 이유 이것은; 예 :

int foo; 
int bar; 
foo = bar = 2; // Equivalent to foo = (bar = 2); 
+0

그래서 할당 작업은 = 기호의 오른쪽을 반환합니까? – Xenoprimate

+0

@ 모틱 : 네, 맞습니다. –

+0

@ 자칼 감사합니다! – Xenoprimate

2

사용.

+0

음, 할당이 부울 값을 반환했는지 궁금합니다. – Xenoprimate

+0

@Motig : 할당은 할당 된 값을 반환합니다. – OregonGhost

0

정적 변수 정의는 메소드 내부가 아니라 클래스 레벨에 배치해야합니다. 이 경우 intializer는 소스 코드에 정의 된 순서대로 실행됩니다.

이것은 abc가 먼저 true로 설정된 다음 abc가 true이므로 foo가 false로 설정됨을 의미합니다.

2
  1. ABC = 사실
  2. ABC = false입니다. 그런 다음 foo = false
  3. abc = true. 그런 다음 foo = true