/*
// case1
// rows가 NULL이면 cnt 도 NULL
// rows가 NULL이 아니면 cnt는 실제 rows 갯수
int? cnt = rows?.Count;
// case2
// customers 컬렉션이 NULL이면 c는 NULL
// 아니면, c는 첫번째 배열요소
Customer c = customers?[0];
// case3
// customers가 널인지 체크하고
// 다시 customers[0]가 널인지 체크
int? age = customers?[0]?.Age;
// case4
// rows가 NULL이면 cnt = 0
// 아니면 cnt는 실제 rows 갯수
int cnt = rows?.Count ?? 0;
*/
using System;
public class MyButton
{
public event EventHandler Clicked;
// 이전 방식
public void Click1()
{
//...
// 스텝1. 임시변수에 이벤트 복사 (Thread safety 때문)
var tempClicked = Clicked;
// 스텝2. 널 체크
if (tempClicked != null)
{
// 스텝3. 이벤트 Invoke
tempClicked(this, null);
}
}
// C# 6.0 방식
public void Click2()
{
// ...
// 위의 3 스텝을 널 조건 연산자을 사용하여
// 한 문장으로 표현
Clicked?.Invoke(this, null);
}
}
class Program
{
static void Main(string[] args)
{
MyButton button = new MyButton();
button.Click1();
button.Click2();
}
}
.NET 4 이상에서 동작하기 때문에 유니티에서 사용하려면 설정이 필요합니다.
File -> Build Settings -> Player Settings클릭 후 아래 이미지와 같이 설정하면 됩니다.