我有一个我想要实例化的课程。它包含两个字段,一个是String,另一个是Action。
在动作声明中,我想在我的班级中使用字符串字段。但是,我不知道如何在实例化时直接调用它。有什么办法,或者我是否必须创建一个字段来包含实例化的类,然后调用文本?
public class ExampleClass
{
public string text;
public Action action;
// on class instantiate -> action.Invoke();
}
public class Program
{
static void Main(string[] args)
{
new ExampleClass
{
text = "Hello",
action = () => {
/* use the text element we specified to do something ->
e.g Console.WriteLine(text); */ },
};
Console.ReadLine();
}
}
尝试仅使用text
字段(如action => ()=> {Console.WriteLine(text);}
)会导致错误:
CS0103名称'文字'在当前上下文中不存在
答案 0 :(得分:3)
你不能。问题是,这实际上是一个封闭。您无法以这种方式访问您正在创建的实例的this
,因此您需要"关闭"超过它。
您有权访问的this
实际上是您正在编写代码的类。在这种情况下,您没有,因为您处于静态函数中反正。
using System;
public class ExampleClass
{
public string text;
public Action action;
}
public class Program
{
public static void Main()
{
var instance = new ExampleClass
{
text = "Hello"
};
instance.action = () => Console.WriteLine(instance.text);
instance.action();
}
}