class Program
{
static void Main(String[] args)
{
Days restDay = Days.Monday;
if (restDay == Days.Sunday)
{
Console.WriteLine("일요일 입니당");
}
else
{
Console.WriteLine("일요일 아님");
}
Console.ReadKey();
}
}
enum Days
{
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
}
C# 에서 최상위문이란 Main 을 생략해도 자동으로 만들어준다는 뜻이다.
Main 문은 아래 예제와 같이 Class 내부에 위치한다.
class Program
{
static void Main(string[] args)
{
Console.WriteLine(args.Length);
}
}
그런데 아래의 예제 코드가 위의 코드와 완벽하게 동일하다.
Console.WriteLine(args.Length);
그 이유는 컴파일러가 자동으로 Main 문을 만들어주기 때문이다. 이러한 C# 의 문법을 최상위문이라고 부르며, 실무에서는 사용하지는 않을 것 같다. 단순히 테스트 용도 정도로는 유용하게 사용되지 않을까?
C# 에서는 int a = null 코드가 에러가 난다. 왜냐하면 int 값에 null 을 허용하지 않기 때문이다. 그렇기 때문에 null 값을 int 에 받고 싶다면 아래와 같이 코드를 작성한다.
//모두 같은 의미임
Nullable<int> a = null;
int? a = null;
개발을 할 때 의미가 중요하기 때문에 Nullable<int> a = null 방식으로 작성하는 것이 더욱 명시적이라서 해당 방식을 많이 활용할 것 같다.
해당 Nullable 객체는 아래와 같이 정의되어 있다. 아직 모든 메서드를 잘 알지는 못하지만 적어도 HasValue 메서드는 자주 사용할 것 같다.
public Nullable(T value)
{
public readonly bool HasValue { get; }
public readonly T HasValue { get; }
public override bool Equals(object? other);
public override int GetHashCode();
public readonly T GetValueOrDefault();
...
}
마지막으로 Nullable 객체를 활용하여 Null 병합 연산 은 다음과 같다.
int? a = null;
int? b = null;
// b가 null이면 a에 3을 대입해라. b가 null이 아니면 b값을 a에 대입
a = b ?? 3;
Console.WriteLine("a: " + a); // 3
Console.WriteLine("b: " + b); // null
int? a = null;
int? b = 3;
a ??= b; //a가 null이면 b 값을 할당해라
Console.WriteLine("a: " + a); //3
Console.WriteLine("b: " + b); //3