마이크로소프트에서 개발된 객체 지향 프로그래밍 언어
.NET Framework을 이용하여 프로그래밍하는 대표적인 언어
윈도우/웹/게임/모바일 등 다양한 영역에서 활용 가능
C# 프로그램은 .cs라는 확장자를 사용한다
C++과 다르게 xxx.h와 같은 헤더파일이 없다
C# 프로그램에서 실행 파일을 만드는 방법
using System;
namespace ex_csharp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!"); // Hello World!
}
}
}
모든 C# 프로그램에는 Main()이라는 시작 함수를 가져야 한다
Main()은 임의의 클래스 안에 존재하며 프로그램 상에 단 1개만 있어야 한다
Main()은 static으로 선언되며, 인자로 String[] args를 받는다
.NET의 모든 프로그래밍 언어는 .NET의 Common Type System에 정의된 .NET 데이터 타입을 이용한다
C#의 경우 int, double, string과 같은 C# 키워드로 데이터 타입을 표현할 수 있으나 컴파일 시 내부적으로 .NET 데이터 타입으로 변경한다
C# 코드에서 123, true, "hello"와 같이 값을 직접 쓰는 것을 리터럴(Literal)이라 한다
특정 데이터 타입을 지정하고 싶을 경우, 접미사(Suffix)를 추가한다
1024L -> long
10.24F -> float
어떤 변수가 메모리 상에 어떤 데이터도 가지고 있지 않다는 의미
C#의 데이터 타입은 NULL을 가질 수 있는 타입(Reference 타입)과 가질 수 없는 타입(Value 타입)으로 구분된다
string s;
s = null;
int나 DateTime과 같은 Value Type은 NULL을 가질 수 없다
하지만 C# 2.0부터 이러한 타입들에 NULL을 가질 수 있게 한 것이 Nullable Type이다
물음표(?)를 Value Type 뒤에 붙이면 Nullable Type이 되고 컴파일 시 .NET의 Nullable 타입으로 변환된다
Nullable 타입을 Value 타입으로 변환하려면 Nullable의 .Value 속성을 사용한다
// Nullable 타입
int? i = null;
i = 100;
//int? 를 int로 할당
Nullable<int> j = null;
j = 10;
int k = j.Value;