C# Type conversion
C# νλ³ν λ°©μ λΉκ΅ λ³΄κ³ μ
1. κ°μ
νλ³νμ νλ‘κ·Έλλ°μμ λ°μ΄ν° νμ
μ λ€λ₯Έ νμ
μΌλ‘ λ³ννλ κ³Όμ μ
λλ€. C#μμλ μ£Όλ‘ as
νλ³νκ³Ό κ΄νΈλ₯Ό μ΄μ©ν λͺ
μμ νλ³ν(μΊμ€ν
)μ΄ μ¬μ©λ©λλ€. λ³Έ λ³΄κ³ μμμλ λ κ°μ§ νλ³ν λ°©μμ νΉμ§, μ°¨μ΄μ , μ₯λ¨μ μ λΉκ΅νμ¬ μ€λͺ
ν©λλ€.
2. νλ³ν λ°©μ
2.1 as
νλ³ν
as
ν€μλλ₯Ό μ¬μ©ν νλ³νμ μμ ν νλ³νμ μ 곡ν©λλ€. λ³νμ΄ μ€ν¨ν κ²½μ° μμΈκ° λ°μνμ§ μκ³ null
μ λ°ννκΈ° λλ¬Έμ νλ‘κ·Έλ¨μ΄ μ€λ¨λμ§ μμ΅λλ€. μ΄λ μ£Όλ‘ μ°Έμ‘° νμ
(Reference Type)κ³Ό Nullable νμμ μ¬μ©λ©λλ€.
νΉμ§:
- νλ³ν μ€ν¨ μ
null
λ°ν. - μ°Έμ‘° νμ κ³Ό Nullable νμμμλ§ μ¬μ© κ°λ₯.
- λ³ν μ±κ³΅ μ¬λΆλ₯Ό
null
체ν¬λ₯Ό ν΅ν΄ νμΈν΄μΌ ν¨.
μμ:
object obj = "Hello";
string str = obj as string; // μ±κ³΅: strμ "Hello"
object obj2 = 123;
string str2 = obj2 as string; // μ€ν¨: str2λ null
if (str2 == null)
{
Console.WriteLine("νλ³ν μ€ν¨");
}
μ₯μ :
- μμΈλ₯Ό λμ§μ§ μμ μμ μ .
- νλ‘κ·Έλ¨μ νλ¦μ΄ μ€λ¨λμ§ μμ.
λ¨μ :
- λ³ν μ€ν¨λ₯Ό
null
λ‘ λ°ννκΈ° λλ¬Έμ μΆκ°μ μΈ null 체ν¬κ° νμν¨. - κΈ°λ³Έ νμ(int, double λ±)μλ μ¬μ©ν μ μμ.
2.2 κ΄νΈλ₯Ό μ΄μ©ν λͺ μμ νλ³ν
κ΄νΈλ₯Ό μ¬μ©νλ νλ³νμ λͺ
μμ νλ³ν(μΊμ€ν
)μΌλ‘, νλ³νμ΄ μ€ν¨ν κ²½μ° InvalidCastException
μμΈλ₯Ό λ°μμν΅λλ€. μ°Έμ‘° νμ
κ³Ό κ° νμ
λͺ¨λμμ μ¬μ©ν μ μμ΅λλ€.
νΉμ§:
- νλ³ν μ€ν¨ μ μμΈ λ°μ (
InvalidCastException
). - λͺ¨λ νμ (μ°Έμ‘° νμ λ° κ° νμ )μ μ¬μ© κ°λ₯.
- κ°μ λ‘ νλ³ν μλ.
μμ:
object obj = "Hello";
string str = (string)obj; // μ±κ³΅: strμ "Hello"
object obj2 = 123;
string str2 = (string)obj2; // μ€ν¨: InvalidCastException λ°μ
μ₯μ :
- κ°μ λ‘ λ³νμ μλνλ©° μμΈλ₯Ό ν΅ν΄ μ€λ₯λ₯Ό νμΈν μ μμ.
- λͺ¨λ νμ μμ μ¬μ©ν μ μμ.
λ¨μ :
- νλ³ν μ€ν¨ μ μμΈκ° λ°μν΄ νλ‘κ·Έλ¨μ΄ μ€λ¨λ μνμ΄ μμ.
- μμΈλ₯Ό λ°©μ§νλ €λ©΄
try-catch
λΈλ‘μ μ¬μ©ν΄μΌ ν¨.
3. μ°¨μ΄μ λΉκ΅
κ΅¬λΆ | as νλ³ν |
κ΄νΈ νλ³ν |
---|---|---|
μ€ν¨ μ κ²°κ³Ό | null λ°ν |
InvalidCastException λ°μ |
λμ | μ°Έμ‘° νμ , Nullable νμ | λͺ¨λ νμ (μ°Έμ‘°, κ° νμ ) |
μμ μ± | μμ (μμΈ μμ) | μμΈ λ°μ μν |
νλ³ν λΆκ° μ μ²λ¦¬ | null μ²΄ν¬ νμ |
μμΈ μ²λ¦¬ νμ |
μ½λ μμ | var result = obj as string; |
var result = (string)obj; |
4. κ²°λ‘ λ° μ¬μ© κ°μ΄λ
4.1 as
νλ³ν μ¬μ© μμ
- μ°Έμ‘° νμ μ΄λ Nullable νμμ λμμΌλ‘ ν λ μ¬μ©.
- νλ³ν μ€ν¨ μ μμΈλ₯Ό νΌνκ³
null
μ λ°ννλλ‘ μ€κ³ν λ μ 리. - λ³ν μ±κ³΅ μ¬λΆλ₯Ό
null
체ν¬λ‘ μ²λ¦¬ν μ μλ κ²½μ°.
4.2 κ΄νΈλ₯Ό μ΄μ©ν λͺ μμ νλ³ν μ¬μ© μμ
- κ° νμ μ΄λ κ°μ νλ³νμ΄ νμν κ²½μ° μ¬μ©.
- λ³ν μ€ν¨ μ μμΈλ₯Ό ν΅ν΄ μ€λ₯λ₯Ό νμΈνκ³ μ ν λ μ 리.
- μ±λ₯μ΄ μ€μν μ½λμμλ μμΈ λ°μμ μ΅μννλλ‘ μ£Όμν΄μΌ ν¨.
4.3 κ²°λ‘
νλ³ν λ°©μμ μ νν λμ κΈ°μ€μ μμ μ±κ³Ό μ μ°μ±μ λλ€.
- μμ ν νλ³νμ΄ νμνλ©΄
as
λ₯Ό μ¬μ©ν©λλ€. - κ°μ νλ³νκ³Ό μμΈ μ²λ¦¬κ° νμν κ²½μ° κ΄νΈ νλ³νμ μ¬μ©ν©λλ€.
κ°λ° νκ²½κ³Ό μꡬ μ¬νμ λ§κ² μ μ ν νλ³ν λ°©μμ μ ννλ κ²μ΄ μ€μν©λλ€.
5. μ°Έκ³ μλ£
- Microsoft Docs: C# νλ³ν