C#μμλ varν¨ν΄μ μ¬μ©νμ¬ objectννλ‘ λ°μ κ°μ varννλ‘ λ€μ μΆλ ₯ν μ μλ€.
μ΄ ν¨ν΄μ ν¨ν΄ λ§€μΉ κΈ°λ₯μ μ΄ν΄νλ λ° λμμ΄ λλ©°, λ³μλ₯Ό νΉμ μ νμΌλ‘ λ°μΈλ©νκ³ μ¬μ©ν λ μ μ©νλ€. μΌλ°μ μΌλ‘ μ μ¬μ©λμ§λ μμ§λ§, μ½λλ₯Ό λ μ½κΈ° μ½κ³ κ°κ²°νκ² λ§λλλ° λμμ΄λλ€. μ΄μ var ν¨ν΄μ λν΄ μ’ λ μμΈν μμ보μ.
μ묡μ νμ μΆλ‘ μ νμ©ν C#μ var ν¨ν΄ μ΄ν΄νκΈ°
μλ μ½λλ κ°μ₯ λ¨Όμ , varν¨ν΄μ λ³μλ₯Ό μμμ νμ μΈ var λ³μλ‘ λ°μ ν 쑰건μ μ κ²νλ€. μ΄λ, 쑰건μ μ κ²νμ§ μλλΌλ μΌλ¨ λ³μλ‘ κ°μ λ°μμΌνλ€.
object obj = "korea";
if(obj is var str){
Console.WriteLine(str);
}
μλ₯Ό λ€μ΄, `object obj = "korea";` μ κ°μ΄ κ°μ²΄λ₯Ό objectνμ μΌλ‘ λ°μ ν, varν¨ν΄μ μ¬μ©νμ¬ κ°μ varνμμ λ³μμ λ΄μλΈλ€. κ·Έλ¦¬κ³ `if (obj is var str)`μ κ°μ΄ isμ°μ°μλ₯Ό μ¬μ©νμ¬ μ‘°κ±΄μ μ κ²νλ€. μ΄λ objλ νμ varνμκ³Ό μΌμΉνλ―λ‘ μ‘°κ±΄μ νμ μ°Έμ΄ λλ€. λ°λΌμ objλ₯Ό strμ λμ νλ κ²κ³Ό κ°μ ν¨κ³Όκ° μλ€.
μ묡μ νμ μΆλ‘ μ κ°λ κ³Ό λμ μ리
μ묡μ νμ μ΄λ νμ μ λͺ μνμ§ μκ³ , varν€μλλ‘ λ³μλ₯Ό μ μΈνλ κ²μ μλ―Ένλ€. μ΄λ μ»΄νμΌλ¬λ μ λ ₯λ κ°μ λΆμνμ¬ λ³μμ νμ μ λ΄λΆμ μΌλ‘ μΆλ‘ νλ€. μλ₯Ό λ€μ΄, λ¬Έμμ΄μ΄ μ λ ₯λμλ€λ©΄ μ»΄νμΌλ¬λ ν΄λΉ λ³μλ₯Ό λ¬Έμμ΄ νμ μΌλ‘ μΈμ§νλ€. μ΄κ²μ JavaScriptμμλ λΉμ·ν μλ‘ λμνλ€. μ¦, μ묡μ νμ μ κ°λ°μκ° λͺ μμ μΌλ‘ νμ μ μ§μ νμ§ μμλ μ»΄νμΌλ¬κ° λ³μμ νμ μ μΆλ‘ νμ¬ μ²λ¦¬νλ λ°©μμ λ§νλ€.
μμ μ½λ
// λ³μ xλ μ μκ° 10μ κ°μ§κ³ , μ»΄νμΌλ¬λ μ묡μ μΌλ‘ int νμ
μΌλ‘ μ μ
var x = 10;
// λ³μ yλ μ μκ° 5λ₯Ό κ°μ§κ³ , μ»΄νμΌλ¬λ μ묡μ μΌλ‘ int νμ
μΌλ‘ μ μ
var y = 5;
// λ³μ strμ λ¬Έμμ΄ "λ¬Έμμ΄"μ κ°μ§κ³ , μ»΄νμΌλ¬λ μ묡μ μΌλ‘ string νμ
μΌλ‘ μ μ
var str = "λ¬Έμμ΄";
// Console.SetCursorPosition λ©μλμ x, y κ°μ μ
λ ₯νμ¬ μ»€μ μμΉλ₯Ό μ€μ νκ³ , "λ¬Έμμ΄"μ μΆλ ₯νλ€.
Console.SetCursorPosition(x, y);
Console.WriteLine(str);
μ μ½λμμ `var`λ₯Ό μ¬μ©νμ¬ λ³μλ₯Ό μ μΈν λ, μ»΄νμΌλ¬λ λ³μμ ν λΉλ κ°μ λ³΄κ³ νμ μ μΆλ‘ νλ€. μλ₯Ό λ€μ΄, `var x =10;`μμ λ³μ `x`μλ μ μκ°μ΄ ν λΉλλ―λ‘ μ»΄νμΌλ¬λ μ묡μ μΌλ‘ `x`λ₯Ό intνμ μΌλ‘ μΆλ‘ νλ€. λ§μ°¬κ°μ§λ‘ `var str =" λ¬Έμμ΄";`μμλ λ³μ `srt`μ λ¬Έμμ΄μ΄ ν λΉλλ―λ‘ μ»΄νμΌλ¬λ `str`μ stringνμ μΌλ‘ μΆλ‘ νλ€. μ΄λ κ² μΆλ‘ λ νμ μ μ»΄νμΌλ¬κ° μ μ μΌλ‘ κ²μ¬νμ¬ μ€ν μ€μ μ€λ₯λ₯Ό λ°©μ§νλ€.
μ μ묡μ νμ μ μ¬μ©ν κΉ?
var νμ μ μ¬μ©νλ©΄ μ½λλ₯Ό μμ±νλλ° νΈλ¦¬ν¨μ λλμ μμ§λ§, λμμ μ½λμ κ°λ μ±μ΄ κ°μν μ μλ€.
κ·ΈλΌμ λΆκ΅¬νκ³ μ묡μ νμ μ μ¬μ©νλ μ΄μ λ 무μμΌκΉ?
그건 λ°νμ μμ μ΄λ€ κ°μ΄ λ€μ΄μ¬μ§ νμ€νμ§ μμ λμ΄λ€. μλ₯Ό λ€μ΄, λ³μμ ν λΉλλ κ°μ νμ .
μ΄ μ½λ μμ± μμ μ μμ μκ±°λ, λ€μν μ νμ κ°μ΄ λ³μμ ν λΉλ μ μλ μνμμ var νμ μ μ¬μ©νλ κ²μ΄ μ μ©νλ€.
μλ₯Ό λ€μ΄, μ λ€λ¦μ μ¬μ©νλ List κ°μ²΄λ₯Ό μκ°ν΄λ³΄μ. Listλ λ€μν μ νμ κ°μ²΄λ₯Ό ν¬ν¨ν μ μλ€.
μ΄λ Listμ ν λΉλλ κ°μ²΄μ νμ μ λͺ μμ μΌλ‘ μ§μ νλ κ²μ λ²κ±°λ‘κ³ λ³΅μ‘ν μ μλ€. νμ§λ§ var νμ μ μ¬μ©νλ©΄ Listμ μ΄λ€ μ νμ κ°μ²΄κ° λ€μ΄μ¬μ§ λͺ¨λ₯Ό λμλ μ½λλ₯Ό κ°κ²°νκ² μ μ§ν μ μλ€.
λ§μ½ ν΄λμ€λ₯Ό μμ± ν λ 곡κ°μ 10κ°λ₯Ό 미리 ν λΉν΄ λμ κ²½μ°, 보ν΅μ ν΄λΉ ν΄λμ€μ μ΄λ¦μ λͺ μνκ³ , κ·Έ λ€μ ν λΉν 곡κ°μ κ°μλ₯Ό μ§μ νλ€. κ·Έλ¬λ var ν€μλλ₯Ό μ¬μνλ©΄ μ½λλ₯Ό κ°μνν μ μλ€.
// λͺ
μμ μΈ λ°©λ²
List<MyNameSpace.MyDefinedClass> list = new List<MyNameSpace.MyDefinedClass>(10);
// κ°μνλ λ°©λ²(var μ¬μ©)
var list = new List<MyNameSpace.MyDefinedClass>(10);
μ΄λ κ² νλ©΄ μ½λκ° λ κΉλν΄μ§κ³ κ°λ μ±μ΄ ν₯μλλ€. JavaScriptμμλ μ΄μ λΉμ·ν λ°©μμ μ¬μ©νλ€. μ΄λ¬ν ννλ λκ°μ νμ μ μ μΈμ μμͺ½μ μμ±ν νμκ° μμ΄μ μ½λλ₯Ό κΉλνκ² λ§λ€μ΄ μ€λ€.
νΉν, νμ μ΄ νμ€νμ§μμ λ(λ°ν νμ μ μμ μλ κ²½μ°) var ν€μλλ₯Ό μ¬μ©νλ©΄ μ»΄νμΌλ¬κ° μ묡μ μΌλ‘ νμ μ μΆλ‘ νμ¬ μ²λ¦¬ν΄μ£ΌκΈ° λλ¬Έμ μ μ©νλ€. μ΄λ κ² ν¨μΌλ‘μ¨ μ½λ μμ±μ λ νΈλ¦¬νκ² λ§λ€μ΄μ€λ€.
λ°λΌμ, μ묡μ νμ μ μ¬μ©ν¨μΌλ‘μ¨ μ½λλ₯Ό κ°κ²°νκ² μ μ§νλ©΄μ λ°νμ μμ λ°μν μ μλ λ€μν μν©μ λλΉν μ μλ€.
foreach 루νλ₯Ό ν΅ν νμ μΆλ‘ μ νΈλ¦¬ν¨
λ°λ³΅μλ₯Ό μ΄μ©νμ¬ foreach 루νλ₯Ό μ€ννλ©΄ λ°λ³΅μκ° λ΄μ₯λμ΄ μλ€.μλ₯Ό λ€μ΄, int νμμ λ°°μ΄μ μ μΈνκ³ ν΄λΉ λ°°μ΄μ foreach 루νλ‘ λ°λ³΅νλ©΄ λ°°μ΄μ μμλ€μ μμλλ‘ μ½μ΄μ¬ μ μλ€.
int[] ar = { 1, 2, 3, 4, 5, 6 }; // int νμμ λ°°μ΄
foreach(var n in ar)
{
Console.WriteLine(n);
}
foreach 루νλ₯Ό μ΄μ©νλ©΄ λ°°μ΄μ μμλ€μ μνν μ μλ€. μ€μ λ‘ λ°°μ΄μ μμλ€μ μ½μ΄μ€λ κ³Όμ μμλ μ μ μλ κ°μ²΄μΌμ§λΌλ μ»΄νμΌλ¬κ° μ묡μ μΌλ‘ νμ μ μΆλ‘ νμ¬ μ²λ¦¬νλ€. λ°λΌμ intλ‘ λͺ μνμ§ μμλ λ΄λΆμ μΌλ‘ μ»΄νμΌλ¬κ° νμ μ μΆλ‘ νλ€.
μ΄λ κ² μ λ€λ¦ νμ μ 컬λ μ μΈ κ²½μ°μλ var ν€μλλ₯Ό μ¬μ©νμ¬ μ»΄νμΌλ¬κ° μμμ νμ μ μΆλ‘ νκ² νλ©΄ μ½λκ° λ κ°κ²°ν΄μ§κ³ κ°λ μ±μ΄ ν₯μλλ€.
νμ κ²°μ μ μμ var, dynamic
μλ°μ€ν¬λ¦½νΈμλ λ€λ₯΄κ² C#μμλ var ν€μλλ μ»΄νμΌ νμμ νμ μ΄ κ²°μ λλ€. μ΄λ JavaScriptμ λμ νμ κ³Όλ μ‘°κΈ λ€λ₯Έ κ°λ μ΄λ€. κ·Έλ¬λ C#μλ λμ νμ μ μ²λ¦¬νκΈ° μν dynamic ν€μλκ° μλ€.
dynamic value; // varλ μ»΄νμΌ μ€μ νμ
κ²°μ , dynamicμ μ€νμ€μ νμ
κ²°μ
value = 5;
Console.WriteLine(value); // μΆλ ₯: 5
value = 3.14;
Console.WriteLine(value); // μΆλ ₯: 3.14
value = "λ¬Έμμ΄";
Console.WriteLine(value); // μΆλ ₯: λ¬Έμμ΄
dynamic ν€μλλ₯Ό μ¬μ©νλ©΄ λ³μμ νμ μ΄ μ€νμ€μ κ²°μ λλ―λ‘, νλ² μ μΈ λ νμλ λ€λ₯Έ νμ μ κ°μ ν λΉν μ μλ€. JavaScirptμ varκ³Ό μ μ¬ν λμ νμ κΈ°λ₯μ μ 곡νλ€.
λ°λ©΄μ var ν€μλλ μ»΄νμΌνμμ νμ μ΄ κ²°μ λλ―λ‘, λ³μκ° μ μΈλ λμ νμ μΌλ‘ κ³ μ λλ€. ν λ² κ²°μ λ νμλ λ€λ₯Έ νμ μ κ°μ ν λΉν μ μλ€.
λ°λΌμ, var ν€μλλ μ»΄νμΌνμμ νμ μ μΆλ‘ νκ³ , dynamic ν€μλλ μ€νμ€μ νμ μ κ²°μ νλ―λ‘ μ΄ λμ μλ‘ λ€λ₯Έ νΉμ±μ κ°μ§κ³ μλ€.
λ€λ₯Έ μΈμ΄μμ μνΈ μ΄μ©μ±μ κ³ λ €ν λμ νμ μ λμ
λμ νμ μ μ§μνλ μ΄μ μ€ νλλ λ€λ₯Έ λμ νμ μΈμ΄μΈ 루λΉμμ μ°λμ μν΄μμ΄λ€. C#μμλ 루λΉμμ μνΈ μ΄μ©μ±μ κ³ λ €νμ¬ λμ νμ μ λμ ν κ²μ΄λ€.
λν C#νκ²½μμλ Python μ½λλ₯Ό μμ±ν μλ μλ€. μ΄κ±΄ κΆμ₯λμ§λ μμ§λ§ κ°λ₯νλ€. μ΄λ₯Ό μν΄μ NuGet ν¨ν€μ§ κ΄λ¦¬μλ₯Ό ν΅ν΄ νμν ν¨ν€μ§λ₯Ό μ€μΉν΄μΌνλ€. λ§μΉ Node.jsμ npmμμ ν¨ν€μ§ λ₯Ό λ€μ΄λ‘λνμ¬ μ¬μ©νλ κ²κ³Ό μ μ¬νκ², C#νκ²½μμλ μμμ ν¨ν€μ§λ₯Ό μ€μΉνκ³ νμ©ν μ μλ€.
IronPython ν¨ν€μ§ μ€μΉ - C# νκ²½μμμ νμ΄μ¬ ν΅ν©
λꡬ> NuGet ν¨ν€μ§ κ΄λ¦¬μ > ν¨ν€μ§ κ΄λ¦¬μ μ½μ
ν¨ν€μ§ κ΄λ¦¬μ μ½μ
intall-package IronPython
IronPython ν¨ν€μ§ μ€μΉκ° μλ£λλ©΄ νμ΄μ¬ μ½λλ₯Ό C#μμ μμ±ν μμλ€.
μ΄λ κ² C#μ λ€λ₯Έ λμ νμ μΈμ΄μμ μνΈμ΄μ©μ±μ κ³ λ €νμ¬ λμ νμ μ μ§μνκ³ μκ³ , νμμ λ°λΌ μΈλΆ μΈμ΄μμ ν΅ν©μ μν ν¨ν€κΈ°λ₯Ό μ€μΉνμ μ¬μ©ν μμλ€.
νμ΄μ¬μ C#μ λ΄μ₯νμ¬ μ¬μ©νκΈ°
μ΄ μ½λλ C#μμ IronPython μμ§μ μ¬μ©νμ¬ μ½λλ₯Ό μ€ννλ μμμ΄λ€. νμ΄μ¬ μ€ν¬λ¦½νΈλ C# μ½λ μμμ λ¬Έμμ΄λ‘ μ μλκ³ , C#μ λ¬Έμμ΄ λ΄μ νμ΄μ¬ μ½λλ₯Ό μμ±ν μ μλ€. μ΄λ κ² νλ©΄ C#μμ νμ΄μ¬ μ½λλ₯Ό μ§μ μμ±νκ³ μ€νν μ μλ€.
'C#' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[C#] μμ νκ³ ν¨μ¨μ μΈ μ€λ λ μμ± λ° μ’ λ£ λ°©λ² (3) | 2024.06.03 |
---|---|
[C#] νλ‘μΈμ€μ μ€λ λμ κ°λ - Main μ€λ λ μ 보 μΆλ ₯νκΈ° (1) | 2024.06.02 |
[C#] κ·Έλν½ GDI+ κ°λ κ³Ό κ°λ¨ν λν 그리기 (0) | 2024.05.22 |
[C#] μ±κΈν€ ν¨ν΄ μ΄ν΄νκΈ° - C++, C# λΉκ΅ (1) | 2024.05.21 |
[C#] μΌλ°νλ μ λ€λ¦ νλ‘κ·Έλλ°κ³Ό 컬λ μ μ νμ© (1) | 2024.05.15 |