C# 에서는 클래스와 구조체가 거의 생김새기 비슷하다.
하지만 큰 차이가 생기는데,
클래스는 참조하여 사용하면 클래스 내의 값이 변경이 일어나고
구조체는 참조하여 사용하면 구조체 내의 값이 변경이 안일어난다.
class TheClass
{
public string? willChange; // ? 이 붙으면 null 이 들어가면 null 뱉으라는 뜻임.
}
struct TheStruct
{
public string willChange;
}
class TheClassAndStruct
{
static void ClassTasker(TheClsss c)
{
c.willChange = "Chatned";
}
static void STructTasker(TheStruct s)
{
s.willChange = "Changed";
}
static void Main()
{
TheClass testClass = new TheClass();
TheStruct testSturct = new TheStruct();
testClass.willChange = "Not Changed";
testStuct.willChange = "Not Changed";
ClassTasker(testClass);
StuctTasker(testStruct);
Console.WriteLine("Class field = {0}", testClass.willChange);
Console.WriteLine("Sturct field = {0}", testStruct.willChange);
Console.WirteLine("Press any key to exit");
Console.ReadKey();
}
}
// Output:
// Class field = Changed
// Struct field = Not Changed