
☆로컬변수: 함수 안쪽에 선언된 변수
☆전역변수 : Field
C# 변수는 메소드 안에서 해당 메소드의 *로컬변수로 선언되거나, 클래스 안에서 클래스 내의 멤버들이 사용하는 전역적 변수로 선언될 수 있다.
로컬 변수는 해당 메소드내에서만 사용이 되며, 메소드 호출이 끝나면 소멸된다.
★반면 필드는 클래스의 객체가 살아있는 한 계속 존속하며 다른 메소드들에서 필드를 참조할 수 있다.
즉, 로컬변수는 기본값을 할당받지 못하기 때문에 반드시 사용 전에 값을 할당해야 하는 반면, 필드는 값을 할당하지 않으면 해당 타입의 Default값이 자동으로 할당된다. 예를 들어 int 타입의 필드인 경우 기본값 0이 할당된다.
★모든 C# 변수의 이름은 대소문자를 구별한다.
예를 들어 val1과 Val1은 다른 변수이다.
그럼 간단한 예제를 살펴보도록 하겠다.
using system;
namespace ConsoleApplication1
{
class CSVar
{
//필드 (클래스 내에서 공통으로 사용되는 전역변수)
int globalVar;
const int MAX = 1024; //const : 상수 선언
public void Method1()
{
int loacalVar; //로컬 변수
Console.WriteLine(globalVar);
Console.WriteLine(locakVar);
}
}
class Program
{
//모든 프로그램에는 main()이 있어야 함
static void mian(string[] args);
{
//테스트
CSVar obj = new CSVar();
obj.Mothod1(); //obj가 참조하는 객체에서 Method1을 실행
}
}
}
필드 globalVar는 값을 명시적으로 할당하지 않은 경우 0이 할당된다.
global(전역) = 객체 or 클래스 내에서의 전역
지역변수 localVar는 값을 할당하지 않고 사용하게 되면, 컴파일 에러가 발생된다 !

사실 처음 배울 땐 이해하기 쉽지 않았다. .
각설하고 상수로 넘어가보겠다.
C# 상수는 C# 키워드 const를 사용하여 정의한다. C# 변수와 굉장히 유사한데, 다만 앞에 const를 붙여 상수임을 나타낸다.
상수와 변수의 차이점은 변수는 프로그램 중간에 값을 변경할 수 있지만, 상수는 초기에 정한 값을 중간에 변경이 불가능하다.
const는 필드 선언부에서 사용되거나 메소드 내에서 사용될 수 있으며, 컴파일 시 상수값이 결정된다.
☆컴파일 : 소스코드를 기계어 혹은 실행 가능한 프로그램으로 변환하는 과정
const 대신에 readonly 키워드를 사용해서 읽기 전용 필드를 만들 수 있다.
readonly는 필드 선언부나 클래스 생성자에서 그 값을 지정할 수 있고, 런타임 시 값이 결정된다.
마찬가지로 간단한 예제를 보고 마치도록 하겠다.
using System;
namespace ConsoleApplication1
{
class CSVar
{
const int Max_Value = 1024; //상수
//readonly 필드
redonly int MAX;
public CSVar()
{
MAX = 1;
}
}
}
-로컬변수 ,전역변수, 변수의 이름 구별
-변수와 상수의 차이점, 컴파일, readonly