在C#中,lambda可以访问局部变量,也可以返回一些数据.
那么,哪种情况更好呢?
int num;
Func<int> func = ()=>{return 10;}
num = func();
Run Code Online (Sandbox Code Playgroud)
VS
int num;
Action action = ()=>{num = 10;}
Run Code Online (Sandbox Code Playgroud)
我认为,表现是不同的.哪个更好?
更新(我不知道如何使用StackOverflow)
我的代码在这里.
ErrorCode errorCode;
errorCode = DatabaseUtility.Read<ErrorCode>(
conn,
DatabaseUtility.CreateSelectQuery(....),
reader =>
{
if(reader.Read())
return ErrorCode.None;
return ErrorCode.InvalidParam;
});
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,我可以这样做.
ErrorCode errorCode;
DatabaseUtility.Read(
conn,
DatabaseUtility.CreateSelectQuery(....),
reader =>
{
if(reader.Read())
errorCode = ErrorCode.None;
else
errorCode = ErrorCode.InvalidParam;
});
Run Code Online (Sandbox Code Playgroud)
而且,这是方法定义.
public static class DatabaseUtility
{
public static Read<T>(
MySqlConnection conn,
string query,
Func<MySqlDataReader, T> callback);
}
Run Code Online (Sandbox Code Playgroud)