C# 키워드 (Keywords)

거의 모든 컴파일러가 키워드를 갖고 있다. 키워드란 컴파일러가 특정 목적을 가지고 미리 사용하겠다고 예약한 단어들이다. 예약되어 있기 때문에 Reserved Word 라고도 한다.

 

대부분 C# 교재에서 이것을 초반에 알려주는데 입문자 입장에서는 숨이 막힌다. 저 많은 것들을 어느 세월에 익힐까? 개별 키워드의 내용은 당연히 초보자가 알 수 없다. 키워드 마다 하나 이상의 챕터가 걸려있다. 그것을 배우는 것이 C#을 학습하는 것이다. 단지 이것을 초반에 알려주는 것은 식별자 작성의 규칙을 알려주기 위해서 이다.

 

식별자는 프로그래머가 만들게 되는 클래스,함수,변수 등의 이름을 의미한다. 쉽게 말해 프로그래머가 지은 이름과 시스템이 사용할 이름이 충돌되면 안되니까 키워드는 사용할 수가 없다. 정 키워드를 이름으로 사용하려면 특수문자@을 사용할 수 있지만 권장되지 않는다.

 

C샵에는 현재 키워드 73개와 상황별 키워드 31개를 합쳐서 총 104개의 키워드가 있다. 자바나 파이썬에 비하면 많은 숫자다. 비주얼 스튜디오를 사용하고 있다면 다 암기할 필요는 없다. 만약 실수로 키워드를 클래스 등의 이름으로 선언하려고 하면 IDE는 미리 오류를 읽는 기능이 있고, 어차피 컴파일시 오류가 난다.

 

 

* C샵의 키워드들

abstract as base bool
break byte case catch
char checked class const
continue decimal default delegate
do double else enum
event explicit extern false
finally fixed float for
foreach goto if implicit
in int interface internal
is lock long namespace
new null object operator
out override params private
protected public readonly ref
return sbyte sealed short
sizeof stackalloc static string
struct switch this throw
true try typeof uint
ulong unchecked unsafe ushort
using virtual void volatile
while

*C#의 상황별 키워드

add alias ascending
async await by
descending dynamic equals
from get global
group into join
let nameof on
orderby partial(형식) partial(메서드)
remove select set
비관리형 제네릭 형식 제약 조건 value var
when(필터 조건) where(제네릭 형식 제약 조건) where(쿼리 절)
yield

* C# 식별자 (identifier) | 변수 이름 짓기

 

이름도 생소한 식별자는 프로그래머가 클래스나 변수 등의 단위에 부여하는 이름이다. 이름 짓는 것은 어렵지만 중요한 일이다. 고민을 좀 해야 좋은 이름이 나온다. 특히 객체지향 프로그래밍에서 더욱 그 중요성이 크다. 결국 이름이 그 클래스 스스로를 설명할 수 있다면 제일 좋다. (self-explanatory name)

 

예를 들어 수학의 파이다 하면 PI = 3.14 가 될 것이다. PI에 대한 설명이 필요없다.

 

이름을 짓기 위한 문법 규칙도 존재한다. 불가리아인 프로그래머 Svetlin Nakov 의 C#책 내용을 참고한다.(Free Licenese)

어느 교재나 똑같은 내용이다. 단순한 규칙이기 때문에

 

1) Variable names can contain the letters a-z, A-Z, the digits 0-9 as well as the character '_'.

 - 변수의 이름은 소문자 a부터 z까지 대문자 A부터 Z까지 숫자와 문자 '_' (언더스코어)를 포함할 수 있다.


2) Variable names cannot start with a digit.

 - 변수의 이름은 숫자로부터 시작할 수 없다. 맨 앞에 숫자는 안된다.


3) Variable names cannot coincide with a keyword of the C# language. For example, base, char, default, int, object, this, null and many others cannot be used as variable names.

 - 변수의 이름은 C#의 키워드와 충돌해서는 안된다. 예를들어 base, char,default, int등은 변수이름으로 사용해서는 안된다.

 

* 출처: https://introprogramming.info/  Fundamentals of Programming with C#

 

자바나 파이썬과도 비슷하지만 완전히 같지는 않다.

 

1) 우선 영문 대소문자가 사용이 가능하고 숫자 0부터9까지 사용가능하다. 언더스코어는 파이썬에서도 사용하니까 알기 쉽다. 여기에 덧붙이면 현재는 한글변수도 사용이 가능하다. MS 비주얼스튜디오 2019의 현재 업데이트 기준이다. 그리고 당연하지만 변수 이름에 공백이 있다거나 하면 안된다. 컴파일러는 공백을 기준으로 소스코드를 자르기 때문이다.

 

한글변수

2) 변수 이름은 숫자로 시작할 수 없다. 이것도 파이썬과 같다. 따옴표가 없이 첫 글자에 숫자가 등장하면 컴파일러는 리터럴인지 변수인지 알수가 없다.

 

3) 변수 이름은 C#키워드와 충돌하면 안된다. 당연한 말이다. C# 키워드 뿐 아니라 이름공간에 불러온 메소드나 변수와 중복될 수 있으니 사용하려는 메소드의 이름에 대하여 미리 알고 있어야 피할 수 있다.

 

이름을 지을 때 처음에는 남들이 작성한 이름을 따라 사용하다가 나중에는 독창적으로 지을 수 있게 된다. 그러나 남들이 봤을 때 좋은 코드는 자기 설명을 잘하는 이름들로 짜여진다.

 

*식별자 포맷팅 규칙

규칙은 커뮤니티 관점에서 준수하라는 부분이다. 남들에게 전혀 보여줄 생각이 없거나 자기 자신도 앞으로 영영 볼 생각이 없다면 규칙을 안지켜도 된다. 그러나 자신이 작성한 코드를 소중히 여기는 자세를 가진다면 지켜야 할 규칙이다. 인터넷에서 동작하는 코드인데 이름이 마음대로 작성되었다고 생각해보면 끔찍하다.

 

문제가 생겼을 때 최초 작성자라도 해결을 못할 수 있다. 아래는 일반적인 룰이다. 개별 프로그래머, 기업의 스타일에 따라 살짝 다른 부분이 있을 수 있다.

 

1) Methods are indented inside the definition of the class (move to the right by one or more [Tab] characters);- Method contents are indented inside the definition of the method;

   - 메소드는 클래스의 정의에서 한탭 들여쓰기한다. 메소드의 컨텐츠는 정의 부분에서 한탭 들여쓰기한다.

 

2) The opening curly bracket { must be on its own line and placed exactly under the method or class it refers to;

   - 클래스나 메소드의 { 괄호를 열 때 한라인 전체를 할당한다. (잘 보이도록)

 

3) The closing curly bracket } must be on its own line, placed exactly vertically under the respective opening bracket (with the same indentation);

   - 클래스나 메소드의 } 괄호를 닫을 때 한라인 전체를 할당한다.

(열었던 괄호와 정확히 들여쓰기가 일치해야함. 하나의 블록임을 알 수 있다)


4) All class names must start with a capital letter; 

   - 모든 클래스 이름은 대문자로 시작한다.

 

5) Variable names must begin with a lower-case letter; 

   - 변수이름은 소문자로 시작한다.

 

6) Method names must start with a capital letter;

   - 메소드 이름은 대문자로 시작한다.

출처: https://introprogramming.info/  Fundamentals of Programming with C#

앞으로 작성하게 될 코드의 규칙이다. 비주얼 스튜디오에서는 자동 들여쓰기 배치가 있기 때문에 매우 수월하게 작업을 할 수 있다. 클래스와 변수, 메소드 이름에 대해서는 MSDN의 표준 라이브러리를 잘 보고 따라하면 된다. 예를 들어 System.Console.WriteLine 메소드를 보면 System 은 네임스페이스, Console 은 클래스 이름 WriteLine은 메소드이다. 모두 대문자로 시작한다. WriteLine은 두개의 단어가 앞글자가 다 대문자다.

 

자바는 메소드를 소문자로 작성하는데 C#하고 다르다.

 

온라인 튜토리얼의 예제코드나 라이브러리 코드를 보면서 따라하는 것이 좋은 방법이다.

 

*네이밍 컨벤션

https://techterms.com/definition/camelcase

 

CamelCase Definition

TechTerms - The Tech Terms Computer Dictionary This page contains a technical definition of CamelCase. It explains in computing terminology what CamelCase means and is one of many software terms in the TechTerms dictionary. All definitions on the TechTerms

techterms.com

 

이 포스트의 내용은 Free License인 Fundamentals of Computer Programming with C# 의 내용을 참고했다. 여러명의 불가리아인 저자들에 의해 작성되고 나온지 조금 오래 된 책이지만 온라인에서 무료로 배포하고 있다. 영어판 앞쪽을 읽어본 결과 영미권 책들과 또다른 장점이 있다. 불가리아가 IT산업이 발전해서 내용의 설명이 상당히 상세하다.

 

파이썬이나 자바 등의 책도 온라인과 PDF로 배포하고 있는데 아쉽게도 불가리어 내용들이 많다. 웹브라우저의 번역기능을 이용하면 영어나 한글로 볼수는 있지만 좀 어색하다.

 

C# 기초를 2018년에 온라인 교재와 함께 Svetlin Nakov가 직접 영어로 강의한 비디오가 있다. 아마 풀강의는 웹사이트에서 유료 결제를 해야 볼 수 있는 것 같다.

 

https://www.youtube.com/watch?time_continue=25&v=_F606F3OgmQ&feature=emb_logo

 

https://introprogramming.info/

 

Introduction to Programming with C# / Java Books

Книгата “Въведение в програмирането с Java” е безплатно ръководство по програмиране на Java с уроци, задачи за упражнения и насоки за решения.

introprogramming.info

무료교재중 C# 하나는 영문 번역이 되어있으니 참고하자.

공유하기

facebook twitter kakaoTalk kakaostory naver band