나는 C#에서 빈 문에 대한 질문을 많이 보았다합니까 C# 컴파일러 최적화 빈 문
string retVal="mystring";;
내 질문은 : 우리는 하늘의 문을 제거하지 않으면, 컴파일러가 최적화 단계에서 제거합니다 ?
나는 C#에서 빈 문에 대한 질문을 많이 보았다합니까 C# 컴파일러 최적화 빈 문
string retVal="mystring";;
내 질문은 : 우리는 하늘의 문을 제거하지 않으면, 컴파일러가 최적화 단계에서 제거합니다 ?
예. 빈 문장을 사용하거나 사용하지 않고 응용 프로그램을 컴파일하고 컴파일 된 응용 프로그램에서 md5 체크섬을 확인하여 직접 확인할 수 있습니다.
예, 세미콜론은 구문 일뿐입니다. 단순히 구문이 끝나는 부분을 구문 분석기에 알려줍니다. 파서는 불필요한 공백이 렉서에 의해 제거되는 것처럼 "빈 문장"을 제거합니다.
eek ... "공백을 제거하는 것과 비슷합니다". 공백 문자는 렉서 (lexer)에 의해 제거되고, 파서에 의해 빈 문장이 제거되고 최적화 단계에 의해 불필요한 문장 ('if (false) {...}'와 같은 문장)이 제거됩니다. 미묘한 차이. – riwalk
@ Stargazer712 : 좋은 지적, 고마워. –
빈 문 (사용자가 인용 한 문과 비슷 함)은 일반적으로 파서가 인식하고 추상 구문 트리로 만들지 않습니다.
그래, 그들은 절대적으로 제거됩니다.
필자는이 답변이 가장 좋기 때문에 파서는이를 제거하므로 컴파일러는 결코 그것을 보지 못한다. 이것은 최적화가 켜져 있는지 여부에 관계없이 발생합니다. 이 경우에는 컴파일러의 함수조차되지 않습니다. – mattypiper
나는 IL을보고 MD5를보고 싶습니다 ... –
+1 ...하지만 Reflector, ILSpy 등을 사용하면 아마도 빈 문장이 제거되었다는 것을 "증명"하는 더 좋은 방법 일 것입니다. MD5 합계는 빈 문장과 반드시 관련이없는 변경으로 인해 변경 될 수 있습니다. – Steve