프로그래밍 강의/C# (6)
using System; using static System.Environment; class Program { static void Main(string[] args) { string option = "/exit"; switch (option) { case "/exit": Console.Write("/exit "); goto case "/writeBye"; case "/writeHI": break; case "/writeBye": Console.Write("bye!" + NewLine); goto default; case "/writeCopyright": break; default: goto gotoLable; } Console.WriteLine("It will be silent."); gotoLabl..
C#에서는 연산자 우선순위에 따라 우선순위가 높은 연산자는 우선순위가 낮은 연산자보다 먼저 실행되며, 우선순위가 같은 연산자끼리는 '좌 결합성'과 '우 결합성'에따라 실행된다. 예를 들어 x+y*z라는 코드는 x+(y*z)로써 실행될 것이다. 여기서 주의해야 할 것은, 이러한 우선순위와 결합성은 연산자들이 실행되는 순서에만 영향을 끼친다는 것이다. 절대 피연산자의 평가 순서에 영향을 주지 않는다. C#에서 피연산자는 항상 왼쪽에서 오른쪽으로 평가된다. A()+B()*C()라는 코드는 'A()->B()->C()' 순으로 평가(호출)되고, 평가된 결과(return)값을 런타임은 우선순위와 결합성을 이용하여 계산한다. 그렇다면 x가 1일 때, F(x++, x++)와 같은 함수 호출은 C#에서는 어떻게 반응할까..
using System; class Program { static void Main(string[] args) { string text = "Hello World"; Console.WriteLine(text); } } Main 메소드는 프로그램의 시작점을 담당하는 특별한 식별자이며, static void 혹은 static int 한정자를 지닌다. static로 지정한 Main은 클래스에 종속된 정적 메소드이므로 new를 통한 인스턴스화 작업 없이도 다른 클래스의 메소드에서 이 메소드를 호출할 수 있음을 의미하기에 프로그램의 최초시작점인 Main 메소드는 정적이 되어야 하는 것이다. 만일 Main이 인스턴스 메소드라면 명령 콘솔에서 인스턴스화를 수행한 뒤 프로그램이 실행되어야 한다. Main의 반환 값은 ..
C# 6.0에서 바뀐 문법들을 요약해 정리해보았다. 내용을 보면 알겠지만, 제네릭과 람다식 등 그동안의 C# 버전의 변경(1.0~5.0) 때와는 달리 C# 6.0은 이전 버전과 비교해 기능적으로 그다지 크게 변화하지는 않았다. - nameof 키워드 추가 ex) nameof(Program.Method); //"Method"가 반환됨 식별자면 모두 다 허용. 개발 중 멤버의 이름이 바뀌었을 때 용이. - 문자열 보간 : string.Format 메소드의 축약표현($) ex) Console.WriteLine($"Name = {name}, hours = {hours:hh}"); ex) string text = $"{person.Name, 20} is {person.Age:D3} year {(p.Age == 1..
'-'는 우선순위 목록을 나타냅니다. 같은 '-' 항목들의 연산자 우선순위는 동일하며 '좌' 혹은 '우' 결합성에 따라 순서대로 실행됩니다. 할당 연산자는 '우' 결합성이기 때문에 'a = b = 3' 과 같은 식이 허용(b가 3이 되고 a가 b이 됨, 즉 a도 3이 됨)됩니다. 우선순위 목록(-)이 아래에 있을수록 더 늦게 실행됩니다. 그래서 '곱하기 연산자'보다 '가산 연산자'가 늦게 실행됩니다. 연산자와 우선순위 목록이 많기 때문에 일일이 외우기가 쉽지 않을 것입니다. 하지만 다음과 같이 구분하여 쉽게 외울 수 있는 방법이 있습니다. 단항 연산자는 피연산자가 한 개 있는 연산자를 뜻하며 두 번째로 우선순위가 높습니다. (사실상 기본 연산자도 단항으로 이루어지기 때문에 단항은 높다고 생각하면 됩니다)..
한정자라고 할 때도 있고 리터럴이라고 할 때도 있고, 또 어떤 것은 한정자 및 연산자가 될 때도 있는 혼란스러운 C#의 키워드를 정리해보았습니다. 키워드를 정리하면서 제가 알고 있는 같이 쓰이는 키워드들은 '키워드~키워드' 혹은 '키워드 키워드'로 묶어놓았는데, 같이 쓰이는 것인데 묶여있지 않거나 단독으로도 쓰이는데도 묶여만 있다면 알려주시면 감사하겠습니다. 한 줄에 작성되어있는 키워드들은 자주 같이 쓰이는 것들로 묶어놓았지만, 본문의 한정자의 경우를 보면 알겠지만 메소드, 필드, 지역변수 등에도 두루두루 쓰이는 것일 때도 있습니다. 한 줄에 묶여있는 것들은 그냥 가독성 쪽으로 생각해주시면 됩니다. 문맥 키워드의 경우에는 '키워드*' 처럼 키워드 뒤에 '*' 표시를 해두었는데, 여러 키워드를 '~'로 묶..