π€ ?, ?? μ°μ°μλ?
C# μ½λλ₯Ό 보면 λ¬Όμν λ¬Έμκ° λ³μ λ€, λ©μλ λ€μ ν κ° λλ μ¬λ¬ κ°μ© λΆμ΄ μλ κ²½μ°κ° μμ΅λλ€.
int? max = list?.Max;
int min = list?.Min ?? 0;
C#μμ ?
λ₯Ό μ¬μ©νλ λ°©μμ μ΄ 1κ°μ νμκ³Ό 2κ°μ μ°μ°μκ° μ‘΄μ¬ν©λλ€.
- nullable
νμ
- ?
μ°μ°μ
- ??
μ°μ°μ
νλμ© μμ보λλ‘ νκ² μ΅λλ€.
π nullable νμ
C# 2.0μ μΆκ°λ nullable
νμμ System.Nullable<T>
ꡬ쑰체μ
λλ€.
μ¦, κ° νμμ λν΄ null
ννμ΄ κ°λ₯νκ² νλ μν μ ν©λλ€.
[μμ 1 - Nullable
μ¬μ©]
Nullable<bool> _getMarried;
public NullAble<bool> GetMarrid
{
get {return _getMarried; } set { _getMarried = value; }
}
Nullable<T>
νμ
μ HasValue
, Value
μμ±μ κ°μ§λλ€.
- HasValue
: κ°μ΄ ν λΉλμλμ§ μ¬λΆλ₯Ό bool
κ°μΌλ‘ λ°ν
- value
: κ° μ‘΄μ¬ μ T νμ
κ° λ°ν
πμ€μν μ μ,Nullable<T>
λ νκΈ°μ μΆμ½ν κ° νμμ ?
λ¬Έμλ₯Ό ν¨κ» λΆμ΄λ ννμ μ§μν©λλ€.
[μμ 2 - ? λ¬Έμλ‘ λ¦¬ν©ν λ§]
bool? _getMarried;
public bool? GetMarrid
{
get {return _getMarried; } set { _getMarried = value; }
}
?
λ¬Έμλ₯Ό κ° νμμ λΆμ΄λ©΄ C# μ»΄νμΌλ¬λ λΉλ μ μλμΌλ‘ Nullable<T>
λ‘ λ°κΎΈμ΄ μ€λλ€.
π ? μ°μ°μ
C#6.0μ μΆκ°λ μ°μ°μλ‘ ? μ°μ°μ
λ null 쑰건 μ°μ°μ
λΌκ³ λΆλ¦½λλ€.
μ°Έμ‘°νλ³μ?.(λ©€λ², λ°°μ΄ ...)
μ°Έμ‘° νμμ λ³μκ° null
μ΄λΌλ©΄ κ·Έλλ‘ null
μ λ°ννκ³ null
μ΄ μλλΌλ©΄ μ§μ λ λ©€λ²λ₯Ό νΈμΆν©λλ€.
[μμ 1- ?
μ°μ°μ λ―Έμ¬μ©]
List<int> list = GetList();
if(list != null)
{
Console.Write(list.Count);
}
μ°Έμ‘°νμ λν null
κ°μ 체ν¬ν λ μ΄λ κ² λ§μ΄ μ½λλ₯Ό μμ±νμ§λ§ null 쑰건 μ°μ°μ
λ₯Ό μ¬μ©νλ©΄ ν¨μ¬ κ°κ²°νκ² μ²λ¦¬ν μ μμ΅λλ€.
[μμ 2- ?
μ°μ°μ μ¬μ©]
List<int> list = GetList();
Console.Write(list?.Count);
[μ£Όμμ¬ν]
null 쑰건 μ°μ°μ
λ λ¨λ
μΌλ‘λ μ¬μ©μ΄ λΆκ°νλ©°, λ°λμ ν΄λΉ μ°Έμ‘°ν λ³μμ λ©€λ²λ₯Ό μ κ·Όνκ±°λ λ§€μ΄ μΈλ±μ€ κ°μ λΆκ°μ μΈ μ κ·Όμ΄ νμν©λλ€.
π ?? μ°μ°μ
C#2.0μ μΆκ°λ μ°μ°μλ‘ ?? μ°μ°μ
λ null
λ³ν© μ°μ°μλΌκ³ λΆλ¦½λλ€.
νΌμ°μ°μ1 ?? νΌμ°μ°μ2
μ°Έμ‘° νμμ νΌμ°μ°μ1μ΄ null
μ΄ μλλΌλ©΄ κ·Έ κ°μ κ·Έλλ‘ λ°ννκ³ , null
μ΄λΌλ©΄ νΌμ°μ°μ2μ κ°μ λ°νν©λλ€.
μ¦, null
κ°μ κ°μ§ μ°Έμ‘°ν λ³μλ₯Ό μμ½κ² μ²λ¦¬ν μ μλ μ°μ°μμ
λλ€.
[μμ 1- ??μ°μ°μ λ―Έμ¬μ©]
string str = null;
if(str == null)
{
Console.WriteLine("nullκ°μ
λλ€.");
}
else
{
Console.WriteLine(str);
}
μ°Έμ‘°νμ λν null
κ°μ 체ν¬ν λ μ΄λ κ² λ§μ΄ μ½λλ₯Ό μμ±νμ§λ§ null
λ³ν© μ°μ°μλ₯Ό μ¬μ©νλ©΄ ν¨μ¬ κ°κ²°νκ² μ²λ¦¬ν μ μμ΅λλ€.
[μμ 2- ?? μ°μ°μ μ¬μ©]
string str = null;
Console.WriteLine(str ?? ("nullκ°μ
λλ€."));
μ 리
μ²μμ λ³Έ μ½λλ₯Ό λ€μ ν΄μν΄ λ³΄κ² μ΅λλ€.
int? max = list?.Max;
int min = list?.Min ?? 0;
[1. nullable
νμ]
κ° νμμ λν΄ null
ννμ΄ κ°λ₯νκ² ν΄ μ€λλ€.
int? max //nullable νμμ κ° νμ max λ³μ
[2. ?
μ°μ°μ]
μ°Έμ‘° νμ λ³μμ null
μ¬λΆμ λ°λΌ μ°Έμ‘°νμμ λ©€λ²λ₯Ό νΈμΆν©λλ€.
list?.Max //listκ° nullμ΄ μλλ©΄ Max λ©€λ² νΈμΆ
[3. ??
μ°μ°μ]
μ°Έμ‘° νμμ null
κ° μ²λ¦¬λ₯Ό κ°κ²°νκ² ν΄ μ€λλ€.
list?.Min ?? 0 //listκ° nullμ΄ μλλ©΄ Min λ©€λ²λ₯Ό νΈμΆ
//Minλ©€λ²κ° nullμ΄ μλλ©΄ Minκ° κ·Έλλ‘λ₯Ό λλ €μ£Όκ³ nullμ΄λ©΄ 0μ λλ €μ€λλ€.