- C# 4.0 Tutorial을 보던 중 재미있는 부분이 있어 업로드한다.
1. Struct를 사용한 참조
- 아래 예제 코드에서 emp1의 값을 변경하여도 emp2의 값이 변경되지 않음.
using System;
namespace ConsoleApp
{
class Program
{
public struct Employee
{
public int BirthYear;
public string Name;
}
static void Main(string[] args)
{
Employee emp1 = new Employee();
emp1.Name = "마타기";
emp1.BirthYear = 1994;
Employee emp2 = emp1;
Console.WriteLine("emp1.BirthYear : {0}", emp1.BirthYear); // 1994
Console.WriteLine("emp2.BirthYear : {0}", emp2.BirthYear); // 1994
emp1.BirthYear = 2020; // emp1.BirthYear 값 변경
Console.WriteLine("====emp1.BirthYear = 2020 값 변경====");
Console.WriteLine("emp1.BirthYear : {0}", emp1.BirthYear); // 2020
Console.WriteLine("emp2.BirthYear : {0}", emp2.BirthYear); // 1994
}
}
}
2. Class를 사용한 참조
- 위 Struct를 사용한 것과는 달리 emp1의 값을 변경하면 emp2의 값도 변경 됨.
using System;
namespace ConsoleApp
{
class Program
{
public class Employee
{
public int BirthYear;
public string Name;
}
static void Main(string[] args)
{
Employee emp1 = new Employee();
emp1.Name = "마타기";
emp1.BirthYear = 1994;
Employee emp2 = emp1;
Console.WriteLine("emp1.BirthYear : {0}", emp1.BirthYear); // 1994
Console.WriteLine("emp2.BirthYear : {0}", emp2.BirthYear); // 1994
emp1.BirthYear = 2020; // emp1.BirthYear 값 변경
Console.WriteLine("====emp1.BirthYear = 2020 값 변경====");
Console.WriteLine("emp1.BirthYear : {0}", emp1.BirthYear); // 2020
Console.WriteLine("emp2.BirthYear : {0}", emp2.BirthYear); // 2020
}
}
}
'Language > C#' 카테고리의 다른 글
[C#] 박싱(Boxing)과 언박싱(Unboxing) (0) | 2020.12.23 |
---|---|
[C#] const 와 readonly (0) | 2020.12.23 |
[C#, 공통] 변수 및 함수 표기 방식 (0) | 2020.12.23 |
[C#] 튜플의 사용 (0) | 2020.12.17 |
[C#] 기본 문법 및 C++과 비교시 차이 (0) | 2020.12.17 |