기능의 설명
누군가가 나는 Func<int, string>
명확한 예와 함께 그것이 무엇 이며 어떻게 사용되는지 설명 할 수 있는지 궁금합니다 .
일반적으로 대표자들은 잘 알고 있습니까? 델리게이트와 이벤트 에 대한 페이지가 도움이되지 않을까요? 둘의 차이점을 설명하는 데 더 적합합니다.
Func<T, TResult>
일반 대리자 일뿐 입니다. 선언에서 형식 매개 변수 ( T
및 TResult
)를 해당 형식 인수 ( int
및 string
) 로 대체하여 특정 상황에서 제공합니다 . 혼동을 피하기 위해 이름도 변경했습니다.
string ExpandedFunc(int x)
즉, Func<int, string>
는 int
인수를 받고를 반환하는 함수를 나타내는 대리자입니다 string
.
Func<T, TResult>
LINQ에서 프로젝션과 조건 자 모두에 자주 사용됩니다 (후자의 경우 TResult
항상 bool
). 예를 들어, 사용하여 Func<int, string>
정수 시퀀스를 시퀀스로 투영 할 수 있습니다 . Lambda 식은 일반적으로 LINQ에서 관련 대리를 만드는 데 사용됩니다.
Func<int, string> projection = x => "Value=" + x;
int[] values = { 3, 7, 10 };
var strings = values.Select(projection);
foreach (string s in strings)
{
Console.WriteLine(s);
}
결과 :
Value=3
Value=7
Value=10
A Func<int, string>
는 int를 먹고 싶어요. 모든 정수를 먹고 반환하는 것은 무엇입니까? 이건 어때요 ...
public string IntAsString( int i )
{
return i.ToString();
}
거기에서 정수를 먹고 먹을 수있는 함수를 만들었습니다. 어떻게 사용합니까?
var lst = new List<int>() { 1, 2, 3, 4, 5 };
string str = String.Empty;
foreach( int i in lst )
{
str += IntAsString(i);
}
// str will be "12345"
별로 섹시하지만 많은 트릭이 기반으로하는 단순한 아이디어입니다. 이제 대신 Func를 사용하겠습니다.
Func<int, string> fnc = IntAsString;
foreach (int i in lst)
{
str += fnc(i);
}
// str will be "1234512345" assuming we have same str as before
각 멤버에서 IntAsString을 호출하는 대신 fnc (메서드에 대한 이러한 참조를 delegates 라고 함 ) 라는 참조를 만들고 대신 사용했습니다. (fnc는 int를 먹고 문자열을 반환합니다.)
이 예제는 그다지 섹시하지는 않지만, 여러분이 보게 될 많은 영리한 것들은 함수, 델리게이트 및 확장 메서드 에 대한 단순한 아이디어를 기반으로합니다 .
내가 본 것들에 대한 최고의 입문서 중 하나는 여기 입니다. 그는 더 많은 실제 사례를 가지고 있습니다. :)
하나 int
를 매개 변수로 사용하고 유형 값을 반환 하는 대리자입니다 string
.
다음은 사용 예입니다.
using System;
class Program
{
static void Main()
{
Func<Int32, String> func = bar;
// now I have a delegate which
// I can invoke or pass to other
// methods.
func(1);
}
static String bar(Int32 value)
{
return value.ToString();
}
}
Func<int, string>
int 값 매개 변수를 받아들이고 문자열 값을 반환합니다. 다음은 추가 지원 방법이 필요없는 예입니다.
Func<int, string> GetDogMessage = dogAge =>
{
if (dogAge < 3) return "You have a puppy!";
if (dogAge < 7) return "Strong adult dog!";
return "Age is catching up with the dog!";
};
string youngDogMessage = GetDogMessage(2);
참고 : Func의 마지막 개체 유형 (예 :이 예에서 "문자열")은 함수 반환 유형입니다 (예 : 기본 형식으로 제한되지 않고 모든 개체). 따라서 Func<int, bool, float>
int 및 bool 값 매개 변수를 허용하고 부동 값을 리턴합니다.
Func<int, bool, float> WorthlessFunc = (intValue, boolValue) =>
{
if(intValue > 100 && boolValue) return 100;
return 1;
};
float willReturn1 = WorthlessFunc(21, false);
float willReturn100 = WorthlessFunc(1000, true);
HTH
참고 URL : https://stackoverflow.com/questions/878650/explanation-of-func
'IT' 카테고리의 다른 글
모든 중첩 된 사전 값을 반복 하시겠습니까? (0) | 2020.09.11 |
---|---|
JavaScript를 통해 사용자 로컬 LAN IP 주소를 얻을 수 있습니까? (0) | 2020.09.11 |
왜 빌드 후 단계 (xcopy)가 TeamCity 빌드에서 코드 2와 함께 종료합니까? (0) | 2020.09.11 |
다음 섹션이 정의 레이아웃 페이지 "~ / Views / Shared / _Layout.cshtml"에 대해 논의되지 않습니다. "서비스" (0) | 2020.09.11 |
bash에서 json 파일을 구문 분석하기 위해 jq 출력에서 큰 따옴표를 제거하는 방법은 무엇입니까? (0) | 2020.09.11 |