아래 코드가있는 경우 Action을 호출해야합니까, 아니면 Action.Invoke를 호출해야합니까?Action.Invoke를 사용하는 것이 가장 좋습니다.
public class ClassA
{
public event Action<string> OnAdd;
private void SomethingHappened()
{
if (OnAdd != null)
OnAdd("It Happened"); //Should it be OnAdd.Invoke("It Happened") ???????
}
}
public class ClassB
{
public ClassB()
{
var myClass = new ClassA();
myClass.OnAdd += Add;
}
private void Add(string Input)
{
//do something
}
}
C# 6에서는 새로운 OnAdd? .Invoke ("It Happened"); 구문을 사용하는 것이 더 일반적 일 수 있습니다. – Betty
위의 주석에 조금 더 자세히 설명해주십시오. 이 예제는 Null 조건부 연산자 인 C# 6의 기능을 사용합니다. ? OnAdd가 null이므로 예외를 방지하면 연산자는 Invote 메서드 호출을 금지합니다. 이것에 의해, 이하의 해답에 명시적인 null 체크를 실시하지 않는 코드를 작성할 수 있습니다. 자세한 내용은 https://msdn.microsoft.com/en-us/magazine/dn802602.aspx를 참조하십시오. – Mark
여기에 약간의 비교 : https://jacksondunstan.com/articles/3283. –