我有一个Func列表,我想添加元素.如果我在Start上添加它们,如下所示,没问题:
public List<System.Func<bool>> conditions = new List<System.Func<bool>>();
void Start()
{
conditions.Add(Iamdead);
conditions.Add(Iamalive);
}
bool Iamdead()
{
...
return ...;
}
bool Iamalive()
{
...
return ...;
}
Run Code Online (Sandbox Code Playgroud)
但我想在没有Start的情况下定义列表,以便我有一个干净的方法列表,我可以将其视为连续的元素.我尝试过经典格式:
public List<System.Func<bool>> conditions = new List<System.Func<bool>>()
{
bool Iamdead()
{
...
return ...;
}
,
bool Iamalive()
{
...
return ...;
}
};
Run Code Online (Sandbox Code Playgroud)
这给了我解析错误
我试过这样的:
public List<System.Func<bool>> conditions = new List<System.Func<bool>>()
{
Iamdead,Iamalive
};
static bool Iamdead()
{
...
return ...;
}
static bool Iamalive()
{
...
return ...;
}
Run Code Online (Sandbox Code Playgroud)
这只有在方法是静态的情况下才有效,但我不希望它们是静态的.没有静态,它不起作用.我似乎无法理解这里的数据结构.谁能告诉我在列表中定义Func的正确方法?
谢谢
我强烈怀疑问题是你试图this在字段初始化程序中隐式访问.你不被允许这样做.只需将初始化移动到构造函数中:
// You don't really use public fields, do you?
private readonly List<Func<bool>> conditions;
public MyClass()
{
conditions = new List<Func<bool>> { Method1, Method2 };
}
private bool Method1() { ... }
private bool Method2() { ... }
Run Code Online (Sandbox Code Playgroud)
(我假设你实际上希望你的条件依赖于实例中的状态.如果他们没有,你就不需要this.如果除了这些条件之外不使用这些方法,并且它们足够短,你可能想要使用lambda表达式.)
| 归档时间: |
|
| 查看次数: |
718 次 |
| 最近记录: |