표현식 나무에 익숙해 지려고합니다. 나는 StringBuilder
을 만들고, "Helloworld"
을 추가하고 그 문자열을 출력하는 간단한 helloWorld
함수를 작성하여 시작할 것이라고 생각했습니다. 이것은 내가 지금까지 무엇을 가지고 :안녕하세요 식탁 나무가있는 세계
var stringBuilderParam = Expression.Variable
typeof(StringBuilder), "sb");
var helloWorldBlock =
Expression.Block(new Expression[]
{
Expression.Assign(
stringBuilderParam,
Expression.New(typeof(StringBuilder))),
Expression.Call(
stringBuilderParam,
typeof(StringBuilder).GetMethod(
"Append",
new[] { typeof(string) }),
new Expression[]
{
Expression.Constant(
"Helloworld", typeof(string))
}),
Expression.Call(
stringBuilderParam,
"ToString",
new Type[0],
new Expression[0])
});
var helloWorld = Expression.Lamda<Func<string>>(helloWorldBlock).Compile();
Console.WriteLine(helloWorld);
Console.WriteLine(helloWorld());
Console.ReadKey();
Compile()
유형의 'System.Text.StringBuilder' ''범위 참조 대상의 InvalidOperationException
변수 'SB'가 발생하지만 정의되지 않은
분명히 나는 올바른 방법을 사용하지 않을 것입니다. 누군가 올바른 방향으로 나를 가리킬 수 있습니까?
분명히 Console.WriteLine("HelloWorld");
은 다소 간단 할 것입니다.
코드를 자르고 붙이려고했지만 더 많은 컴파일러 오류가 발생했습니다. 게시 할 수있는 코드가 더 있습니까? –
@ IanO'Brien, 그 코드를 잘못 복사 한 것 같습니다. 어떤 컴파일러 오류가 발생합니까? – Jodrell