W języku C#, lambda może uzyskać dostęp do zmiennej lokalnej, a także zwrócić niektóre dane.C# lambda, przypisz lokalną zmienną do danych zwrotnych
, co jest lepsze w tej sytuacji?
int num;
Func<int> func =()=>{return 10;}
num = func();
vs
int num;
Action action =()=>{num = 10;}
myślę, wydajność jest różna. Co jest lepsze?
AKTUALIZACJA (nie wiem jak używać StackOverflow)
mój kod tutaj.
ErrorCode errorCode;
errorCode = DatabaseUtility.Read<ErrorCode>(
conn,
DatabaseUtility.CreateSelectQuery(....),
reader =>
{
if(reader.Read())
return ErrorCode.None;
return ErrorCode.InvalidParam;
});
Ale w takim przypadku mogę być w stanie to zrobić.
ErrorCode errorCode;
DatabaseUtility.Read(
conn,
DatabaseUtility.CreateSelectQuery(....),
reader =>
{
if(reader.Read())
errorCode = ErrorCode.None;
else
errorCode = ErrorCode.InvalidParam;
});
I to jest definicja metody.
public static class DatabaseUtility
{
public static Read<T>(
MySqlConnection conn,
string query,
Func<MySqlDataReader, T> callback);
}
co próbujesz osiągnąć? co rozumiesz przez _better_? co powstrzymuje cię od bezpośredniego przypisania '10' do' num'? –
@ Selman22 o co pytasz? to tylko prosty przykład. Jeśli chcesz wiedzieć, dlaczego chcę poznać tę wiedzę, to mogę ci powiedzieć. Próbuję WYBRAĆ niektóre dane z mojego DB i obsłużyć dane. W tym celu definiuję metodę użyteczną z parametrem typu Func. I przetwarzam moje dane po metodzie narzędzia, więc Func zwraca moje dane. ale lambda może uzyskać dostęp do zmiennej lokalnej, dlaczego zwracam moje dane? Mogę przypisać moje dane do mojej lokalnej zmiennej. prawda? więc pytam, który jest lepszy kod. –
Co sprawia, że uważasz, że wydajność jest inna? Czy twoja aplikacja jest tak doskonała, że musisz martwić się o taką mikrooptymalizację? –