티스토리 뷰
반응형
개발을 하다 가끔 궁금했던 내용을 정리해 봅니다.
제가 Action<T>와 Func<TResult>의 사용법을 명확하게 정리를 하지 못하고 있었는데, 어제 해당 기능을 이용해서 저장과 불러오기 기능을 구현해 보니 좀 명확하게 구분이되는 것 같습니다.
Action<T>
매개 변수를 한개 가지는 값을 반환하지 않는 메서드를 캡슐화합니다. 매개 변수 1개를 넣어서 실행시키는 메서드를 정의해 놓고 전혀 다른 곳에서 메서드를 실행해서 원하는 작업을 진행할 수 있습니다.
더 자세한 사항은 여기를 참고합니다.
Func<TResult>
매개 변수가없는 메서드를 캡슐화하고 TResult 매개 변수에 지정된 형식의 값을 반환합니다. Func는 기본적으로 값을 반환해야하기 때문에, Action<T>와 비슷하게 보이지만, 매개 변수가 없는 함수를 호출하고 반환 값을 받아서 작업을 진행할 수 있습니다.
더 자세한 사항은 여기를 참고합니다.
여기에서는 파라메터를 받아서 사용하는 방법에 대해서 다루고 있지 않치만, Action이나 Func는 모두 여러개의 파라메터를 받아서 사용할 수 있습니다. 참고하시면 좋을 것 같습니다.
.NET Console app
//.net 5.0
using System;
/// <summary>
/// 문자열 입력받아서 처리할 수 있는 동작을 정의
/// </summary>
Action<string> SaveCommand;
/// <summary>
/// 문자열을 반환하는 함수를 정의
/// </summary>
Func<string> LoadCommand;
MainView();
SubView();
/// <summary>
/// SaveCommand와 LoadCommand를 정의
/// </summary>
void MainView()
{
string _savedData = string.Empty;
SaveCommand = data =>
{
_savedData = data;
Console.WriteLine($"Saved Data : {_savedData}");
};
LoadCommand = () =>
{
return $"{_savedData} from MainView";
};
}
/// <summary>
/// SaveCommand와 LoadCommand를 실행
/// </summary>
void SubView()
{
SaveCommand.Invoke("Hello Kaki104");
var data = LoadCommand();
Console.WriteLine($"Loaded Data : {data}");
}
Result
Saved Data : Hello Kaki104
Loaded Data : Hello Kaki104 from MainView
C:\Users\kaki1\source\repos\ActionFuncSample\ActionFuncSample\bin\Debug\net5.0\ActionFuncSample.exe (process 29624) exited with code 0.
To automatically close the console when debugging stops, enable Tools->Options->Debugging->Automatically close the console when debugging stops.
Press any key to close this window . . .
반응형
'.NET 5, 6, 7' 카테고리의 다른 글
The New .NET Multi-platform App UI (0) | 2021.02.05 |
---|---|
MAUI in .NET 6: Xamarin.Forms Does Desktop, but Not Linux or VS Code (0) | 2021.01.26 |
What’s next for System.Text.Json? (0) | 2021.01.20 |
.NET Conf 2021 x Seoul (0) | 2021.01.17 |
Xamarin.Forms 5.0 릴리즈! (0) | 2021.01.14 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- LINQ
- dotNETconf
- #Windows Template Studio
- UWP
- kiosk
- IOT
- ComboBox
- Always Encrypted
- Build 2016
- windows 11
- #prism
- Microsoft
- Cross-platform
- Windows 10
- uno platform
- #uwp
- XAML
- .net 5.0
- Visual Studio 2022
- MVVM
- WPF
- Bot Framework
- .net
- PRISM
- Behavior
- visual studio 2019
- uno-platform
- ef core
- #MVVM
- C#
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함