C# 컴파일러는 "true"나 "false"나 딱 1종류만 있다고 생각함.

ECMA CLI 사양에서는 "false"는 0을 뜻하고 "true"는 0 이외의 모든 것을 뜻함.


7ef3c028e2f206a26d81f6e2438872


그래서 이 코드를 실행시키면 True/True/False가 나옴.

컴파일러가 보기엔 a[0]나 b[0]나 똑같은 true지만 CLI가 보기엔 a[0]은 1이고 b[0]은 2니까 다르다는 논리.


79f3c028e2f206a26d81f6e747847d68


그리고 CLI를 거치지 않아서 그런지 디버거는 a[0]나 b[0]나 똑같은 놈이라고 생각함.