이것은 내가 여기에서 얻은 프로젝트의 일부 코드의 프로토 타입입니다. 그러나 그것이 작동하는 방식을 이해하는 데 어려움을 겪고 있습니다. 다음은 코드입니다.C# 대리자와 관련된 코드는 어떻게 작동합니까?
static void Main(string[] args)
{
SomeClass sm = new SomeClass();
var assigner = new Dictionary<string, Action<SomeClass, string>>
{
["TargetText"] = (someClass, value) => someClass.Name = value,
};
for (int i = 0; i < 10; i++)
{
Action<SomeClass, string> propertySetter;
if (!assigner.TryGetValue("TargetText", out propertySetter))
{
continue;
}
else
propertySetter(sm, "Johnny Bravo");
}
Console.WriteLine(sm); // output Johnny Bravo ????
}
}
public class SomeClass
{
string name;
public string Name
{
get { return name; }
set { name = value; }
}
public override string ToString()
{
return $"{Name}";
}
}
질문 :
propertySetter
대표는Main()
에 할당되지 않은, 그래서 왜 사용할 수 있도록 허용?- 인수가
propertySetter(sm, "Johnny Bravo");
에 전달되면 할당 자 사전으로 이동하도록 지시하는 항목은 무엇입니까? 내가"TargetText"
같은 것을 사람들이있는propertySetter(sm, "Johnny Bravo");
와 함께 전달되는 참조하지 않는 한이 사전에 도착 않는 경우
''TryGetValue' 호출에서'propertySetter'가 할당됩니다. 스레드 당 – msitt
개의 질문을하십시오. 문제를 좁히십시오 – Rahul
* "할당 자 사전에 가도록 지시하는 내용은 무엇입니까?"* - 당신은 그것을 할당 자로부터 얻었습니다. 'TryGetValue'를 사용하여 사전에서 가져온 λ 식 객체를 실행합니다. –