변수
l 변수의 선언 방법은 다른 프로그래밍 언어와 비슷하다.
l 변수는 변하는 값을 저장하는데 a=a+1 이라는 문장에서 a가 변수이고 a의 값은 변한다.
l 메소드 내부에서 사용되는 지역(Local)변수는 스택(Stack)에 저장되며 사용 전에 반드시 초기화 되어야 한다.
int a // 4바이트 정수, 원 타입은 System.Int32, 즉 System.Int32의 Alias
int a, b;
System.Int32 a, b; //위와 동일
int a=1, b=2;
int a, b=2;
l 특수문자 사용할 수 없으며 변수명 첫글자를 소문자로 시작하는 것이 관례이다.
l 여러단어로 구성된 변수는 첫글자는 소문자로 나머지 단어의 첫머리는 대문자로.
l 대체로 영문 알파벳으로 변수명을 정한다.
l 가독성을 좋게하기 위해 변수명을 i, j, k와 같이 쓰는 것보다 역할을 인지할 수 있도록 정하는 것이 좋다. (예: string name, int age, 물론 루프 카운터 변수는 주로 i,j,k 등을 사용한다).
변수의 형 변환(Type Casting)
l 변수에 담겨진 값의 형식(Type)을 다른 형식으로 변환하는 것으로 형 변환은 묵시적 형 변환(Implicit conversions)과 명시적 형 변환(Explicit conversions) 방법이 있다.
l short a; int b=a 를 수행하면, a의 값은 int로 자동형 변환되어 b에 저장된다.(묵시적 형 변환)
l 위 예문처럼 short를 int로 바꾸는 것은 문제의 소지가 없으며 컴파일러에서 자동으로 형 변환한다. 그러나 크기를 줄이는 변환이 필요한 경우에는 명시적으로 형 변환을 해야 한다. int를 short로 바꾸는 것은 오버플로우를 야기할 가능성이 있으며 원하는 값으로 형 변환 되지 않을 수 있다.
checked 형변환
l int를 short로 묵시적 형 변환 할 수 없고, 명시적으로 변환하면 overflow가 발생하는 것을 확인했다. 그러므로 형 변환 하기 전에 값이 overflow가 생기는지 미리 점검해 볼 필요가 있다.
l 이때 checked 키워드가 필요하며, C# 닷넷에서는 checked/unchecked 키워드를 제공하여 정수 형식의 산술 연산 및 변환에 대한 오버플로 검사를 명시적으로 하도록 하고 overflow가 발생한다면 Exception을 발생시킨다.
l 명령행에서 컴파일하는 경우 아래처럼 사용가능 하다.
csc /unchecked TypeCastExample2.cs
csc /checked TypeCastExample2.cs
모든 소스코드에 대해 overflow 검사를 한다.
var Type
l 메소드 안에 사용되는 지역변수인 경우 명시적인 Type 대신 var를 사용할 수 있다.
l 변수의 형식을 유추하도록 컴파일러에 지시한다.
// i는 int형으로 컴파일러가 유추하여 컴파일 한다.
var i = 999;
// s 는 문자열로 유추하여 컴파일 한다.
var str = "OJC";
// iArray변수는 int형 배열로 유추하여 컴파일한다.
var iArray = new[] { 0, 1, 2 };
l Var는 동일한 문에서 지역 변수를 선언하고 초기화하는 경우에만 사용할 수 있다.
아래는 오류!
var a;
a = 888;
Implicitly-typed local variables must be initialized
상수
l 컴파일 타임에 값이 정해지는 멤버, 필드이므로 값이 변경될 수 없다. 항상 고정된 데이터형식과 값을 가진다.
l const 키워드를 사용하여 필드상수 또는 지역상수를 정의하며 선언 시 초기값을 주어야 한다.
예) const double PI=3.141592;
l 선언할 때 값을 할당하지 않으면 에러가 발생하고 선언 후 값을 할당해도 에러가 발생한다.
l 상수는 주로 대문자로 변수명을 지정한다.
C# 프로그램의 기본 구조
댓글 없음:
댓글 쓰기