staticμ μ¬μ μ μΌλ‘ 'μ μ 'μ΄λΌλ λ»μ κ°μ§κ³ μλ€.(μμ§μ΄μ§ μλλ€.)
C#μμ staticμ λ©μλλ νλκ° ν΄λμ€μ μΈμ€ν΄μ€κ° μλ ν΄λμ€ μ체μ μμλλλ‘ μ§μ νλ νμ μμ΄λ€.
ν νλ‘κ·Έλ¨ μμμ μΈμ€ν΄μ€λ μ¬λ¬ κ°κ° μ‘΄μ¬ν μ μμΌλ ν΄λμ€λ λ¨ νλλ§ μ‘΄μ¬νλ€.
λκ°μ ν΄λμ€κ° λ κ° μ΄μ μ‘΄μ¬ν μλ μλ€.
μ΄λ€ νλκ° ν΄λμ€μ μμλλ€λ κ²μ 곧 κ·Έ νλκ° νλ‘κ·Έλ¨ μ 체μμ μ μΌνκ² μ‘΄μ¬νλ€λ κ²μ μλ―Ένλ€.
λ€μ νλ νλ(ν΄λμ€ μμ μ μΈν λ³μ)κ° μΈμ€ν΄μ€μ μμλ κ²½μ°μ ν΄λμ€μ μμλ κ²½μ°μ μμ μ½λλ₯Ό λ΄κ³ μλ€.
staticμΌλ‘ νμ νμ§ μμ νλλ μλμΌλ‘ μΈμ€ν΄μ€μ μμλλ©°,
staticμΌλ‘ νμ ν νλλ ν΄λμ€μ μμλλ€.
μ μ νλλ₯Ό λ§λ€μ΄μ μ»λ μ΄λ:
staticμΌλ‘ μμν νλλ νλ‘κ·Έλ¨ μ 체μ κ±Έμ³ νλλ§ λ§λ€ μ μκ² λλ€.
κ·Έλ¬λ―λ‘ νλ‘κ·Έλ¨ μ 체μ κ±Έμ³ κ³΅μ ν΄μΌ νλ λ³μκ° μλ€λ©΄ μ μ νλλ₯Ό μ΄μ©νλ©΄ λλ€.
<μ 체 μμ€μ½λ>
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;
namespace UsingOut
{
class MyClass1
{
public int a;
public int b;
}
class MyClass2
{
public static int a;
public static int b;
}
class Cat
{
public Cat()
{
name = "";
color = "";
}
~Cat()
{
WriteLine($"μ κ°, {name}");
}
public Cat(string _name, string _color)
{
name = _name;
color = _color;
}
private string name; //ν΄λμ€ μμ μ μΈλ λ³μ : νλ
private string color; //ν΄λμ€ μμ μ μΈλ λ³μ : νλ
public void SetName(string newName)
{
name = newName;
}
public string GetName()
{
return name;
}
public void SetColor(string newColor)
{
color = newColor;
}
public string GetColor()
{
return color;
}
public void Meow() //λ©μλ
{
WriteLine($"{color} κ³ μμ΄ {name}κ° μΌμΉ!");
}
}
class MainApp
{
static void Main(string[] args)
{
MyClass1 obj1 = new MyClass1();
obj1.a = 1;
obj1.b = 2;
MyClass1 obj2 = new MyClass1();
obj2.a = 3;
obj2.b = 4;
MyClass2.a = 1;
MyClass2.b = 2;
int a = new int();
a = 3;
string lovemessage = new string(new char[] {'I',' ', 'l', 'o', 'v','e', ' ', 'y','o','u' });
WriteLine(a);
WriteLine(lovemessage);
Cat nabi = new Cat(); //nabi κ°μ²΄ μμ±
Cat neko = new Cat("neko","νμ"); //nabi κ°μ²΄ μμ±
nabi.Meow();
neko.Meow();
Cat kitty = new Cat(); //kitty κ°μ²΄ μμ±
kitty.SetColor("νμμ");
kitty.SetName("ν€ν°");
kitty.Meow();
WriteLine($"{kitty.GetName()}μ μκΉμ {kitty.GetColor()}μ΄λλλ€.");
Cat nero = new Cat(); //nero κ°μ²΄ μμ±
nero.SetColor("κ²μμ");
nero.SetName("λ€λ‘");
nero.Meow();
WriteLine($"{nero.GetName()}μ μκΉμ {nero.GetColor()}μ΄λλλ€.");
}
}
}
λ€μμ μ μ νλλ₯Ό μ΄μ©νλ μμ νλ‘κ·Έλ¨μ΄λ€.
μ¬λ¬ ν΄λμ€μμ Globalμ΄λΌλ μ΄λ¦μ κ°μ§ ν΄λμ€μ μ μ νλμ μ κ·Όνλ μμ λ₯Ό 보μ¬μ€λ€.
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;
namespace UsingOut
{
class Global
{
public static int Count = 0;
}
class ClassA
{
public ClassA()
{Global.Count++;}
}
class ClassB
{
public ClassB()
{Global.Count++;}
}
class MainApp
{
static void Main(string[] args)
{
WriteLine(Global.Count);
new ClassA();
new ClassA();
new ClassB();
new ClassB();
WriteLine(Global.Count);
Global.Count = 100;
WriteLine(Global.Count);
}
}
}
<μΆλ ₯ κ²°κ³Ό>
0
4
100
μ μ λ©μλ μμ μ μ νλμ²λΌ μΈμ€ν΄μ€κ° μλ ν΄λμ€ μ체μ μμλλ€.
μ μ λ©μλμ λν΄ μ°μ μ μΌλ‘ κΈ°μ΅ν΄μΌ ν κ²μ
μ μ λ©μλκ° ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μμ±νμ§ μμλ νΈμΆμ΄ κ°λ₯ν λ©μλλΌλ μ μ΄λ€.
μ°Έκ³ λ‘, λΉμ μ λ©μλλ
ν΄λμ€μ μμλλ μ μ λ©μλμ λ¬λ¦¬ μΈμ€ν΄μ€μ μμλλ€κ³ ν΄μ μΈμ€ν΄μ€ λ©μλλΌκ³ νλ€.
μΈμ€ν΄μ€ λ©μλλ μ΄λ¦μ²λΌ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μμ±ν΄μΌλ§ νΈμΆν μ μλ λ©μλμ΄λ€.
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;
namespace UsingOut
{
class Global
{
public static int Count = 0;
public static void StaticMethod()
{
Count += 100;
}
}
class ClassA
{
public ClassA()
{Global.Count++;}
}
class ClassB
{
public ClassB()
{Global.Count++;}
}
class ClassC
{
public ClassC()
{ Global.StaticMethod(); }
}
class ClassD
{
public void nonstaticMethod()
{
WriteLine("μΈμ€ν΄μ€ λ©μλ");
}
}
class MainApp
{
static void Main(string[] args)
{
WriteLine(Global.Count);//0
new ClassA();
new ClassA();
new ClassB();
new ClassB();
WriteLine(Global.Count);//4
Global.Count = 100;
WriteLine(Global.Count);//100
Global.StaticMethod();
WriteLine(Global.Count);//200
new ClassC();
WriteLine(Global.Count);//300
ClassD test = new ClassD();
test.nonstaticMethod(); //μΈμ€ν΄μ€ λ©μλ
}
}
}
λ³΄ν΅ κ°μ²΄ λ΄λΆμ λ°μ΄ν°λ₯Ό μ΄μ©ν΄μΌ νλ κ²½μ°μλ μΈμ€ν΄μ€ λ©μλλ₯Ό μ μΈνκ³ ,
λ΄λΆ ν μ΄ν°λ₯Ό μ΄μ©ν μΌμ΄ μλ κ²½μ°μλ λ³λμ μΈμ€ν΄μ€ μμ±μμ΄ νΈμΆν μ μλλ‘
λ©μλλ₯Ό μ μ μΌλ‘ μ μΈνλ€.
(μ΄λ€ κ²½μ°μ μΈμ€ν΄μ€ λ©μλλ₯Ό μ μΈν μ§ λλ μ μ λ©μλλ₯Ό μ μΈν μ§μ λν΄μλ MSμ μμ§λμ΄λ€μ΄ .NET ν΄λμ€ λΌμ΄λΈλ¬λ¦¬ μμ μ’μ μλ₯Ό λ§λ ¨ν΄λμ κ²μ μ°Έκ³ ν΄μ 곡λΆν΄λκ°λ©΄ λλ€.)
'C# > μ΄κ²μ΄ C#μ΄λ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
21. this, this() μμ±μ (0) | 2022.02.10 |
---|---|
20. μμ 볡μ¬(Shallow Copy)μ κΉμ 볡μ¬(Deep Copy) (0) | 2022.02.10 |
18. κ°μ²΄μ μΆκ³Ό μ£½μ(μμ±μ,μ’ λ£μ) + μμ±μ μ€λ²λ‘λ© (0) | 2022.02.10 |
17. C#μ ν΄λμ€ (0) | 2022.02.10 |
16. κ°, μ°Έμ‘°μ μν 맀κ°λ³μ μ λ¬, refμ outμ μ°¨μ΄ (0) | 2022.02.09 |