我希望能够访问" co"在我的lambda表达式中。有可能这样做吗?如果有,怎么样?如果没有,我该怎么做呢?
我想在我的函数中传递一段代码" Do"在那里我可以使用" Do"。
范围内的变量如果你不知道我在说什么,请问我任何问题,不要试着更好地解释。
public static type Do<type>(Func<type> fun)
{
OracleConnection co = null;
type ret = default(type);
try
{
co = CreateCo();
MessageBox.Show("Connected");
ret = fun();
}
catch (Exception)
{
MessageBox.Show("Error");
}
finally
{
CloseCo(co);
}
return ret;
}
public static class Get
{
public static class Question
{
public static string byId()
{
//This lambda expression
return Do<string>(() =>
{ co./*here I can't access my object: why? how? */ });
}
}
}
当我拿到一个时,我会用答案更新这篇文章: - &GT; One answer that work !!!
答案 0 :(得分:0)
我不明白,你究竟想要什么。
但如果你打电话:
return Do<string>(() => { });
() => {}
表示具有lamda表达式的函数。但是该函数与您的类型声明无关。在类型声明中,您有一个函数作为参数,但此函数与您的类型无关。
我认为,这就是为什么你无法访问“co”的原因。
更新
这是一个解决方案吗?
public static class Get
{
public static class Question
{
public static string byId()
{
Func<OracleConnection, string> func1 = (co) => co.ToString();
return Do<string>(func1);
}
}
}
public static type Do<type>(Func<OracleConnection, type> fun)
{
OracleConnection co = null;
type ret = default(type);
try
{
co = CreateCo();
MessageBox.Show("Connected");
ret = fun(co);
}
catch (Exception)
{
MessageBox.Show("Error");
}
finally
{
CloseCo(co);
}
return ret;
}