Func 의뢰

22691 단어 C#
원본 주소:http://msdn.microsoft.com/zh-cn/library/bb549151(v=vs.100).aspx
네 임 스페이스:  System
프로그램 집합:
  
mscorlib
(mscorlib. dll 에서)
문법
C#
C++
F#
VB
public delegate TResult Func<in T, out TResult>(
	T arg
)


유형 매개 변수
in 
T
이 위탁 패 키 징 방법의 매개 변수 형식 입 니 다.
이 유형의 매개 변 수 는 역 변 적 이다.지정 한 유형 이나 파생 정도 가 낮은 유형 을 사용 할 수 있다 는 것 이다.협 변 과 역 변 에 관 한 더 많은 정 보 는 범 형 중의 협 변 과 역 변 을 참조 하 시기 바 랍 니 다.
out 
TResult
이 위탁 패 키 징 방법의 반환 값 형식 입 니 다.
이 유형의 매개 변 수 는 협 변 적 이다.지정 한 유형 이나 파생 정도 가 높 은 유형 을 사용 할 수 있다 는 것 이다.협 변 과 역 변 에 관 한 더 많은 정 보 는 범 형 중의 협 변 과 역 변 을 참조 하 시기 바 랍 니 다.
매개 변수
arg
형식:
T
이 패키지 방법 에 대한 인자 입 니 다.
반환 값 형식:
TResult
이 의뢰 패키지 방법의 반환 값 입 니 다.
비고
이 의뢰 를 사용 하면 사용자 정의 의뢰 를 명시 하지 않 고 매개 변수 로 전달 할 수 있 는 방법 을 표시 할 수 있 습 니 다. 패 키 징 방법 은 이 의뢰 가 정의 한 방법 과 서명 해 야 합 니 다. 즉, 패 키 징 방법 은 값 을 통 해 전달 되 는 매개 변 수 를 가지 고 값 을 되 돌려 야 한 다 는 것 이다.
주의 하 다.
매개 변 수 를 참조 하고 되 돌려 주 려 면 void 비 주 얼 베 이 직 Sub 성명 되 는 것 이 아니 라 Function 범 형 Action 의뢰
사용 중 Func 의뢰 할 때 하나의 매개 변수 만 을 봉인 하 는 방법 을 명시 적 으로 정의 하지 않 아 도 됩 니 다. 예 를 들 어 다음 코드 는 이름 을 명시 했다. ConvertMethod 의뢰 UppercaseString 방법의 인용 은 그 위탁 실례 에 분배 된다.
C#
VB
using System;

delegate string ConvertMethod(string inString);

public class DelegateExample
{
   public static void Main()
   {
      // Instantiate delegate to reference UppercaseString method
      ConvertMethod convertMeth = UppercaseString;
      string name = "Dakota";
      // Use delegate instance to call UppercaseString method
      Console.WriteLine(convertMeth(name));
   }

   private static string UppercaseString(string inputString)
   {
      return inputString.ToUpper();
   }
}



다음 예제 에 서 는 이 코드 를 간소화 하 였 으 며, 그것 이 사용 하 는 방법 은 실례 화 되 었 다. Func 새로운 의뢰 를 명시 적 으로 정의 하고 이름 을 짓 는 방법 을 이 의뢰 에 배분 하 는 것 이 아 닙 니 다.
C#
VB
using System;

public class GenericFunc
{
   public static void Main()
   {
      // Instantiate delegate to reference UppercaseString method
      Func<string, string> convertMethod = UppercaseString;
      string name = "Dakota";
      // Use delegate instance to call UppercaseString method
      Console.WriteLine(convertMethod(name));
   }

   private static string UppercaseString(string inputString)
   {
      return inputString.ToUpper();
   }
}



다음 예제 에 따라 C \ # 에서 보 여줄 수 있 습 니 다. Func 익명 의 방법 과 함께 사용 을 의뢰 합 니 다. (익명 방법 에 대한 소 개 는 익명 방법 (C \ # 프로 그래 밍 안내) 을 참조 하 십시오.)
C#
using System;

public class Anonymous
{
   public static void Main()
   {
      Func<string, string> convert = delegate(string s)
         { return s.ToUpper();}; 

      string name = "Dakota";
      Console.WriteLine(convert(name));   
   }
}



다음 예제 에서 보 여 준 대로 lambda 표현 식 을 할당 할 수 있 습 니 다. Func 의뢰 (lambda 표현 식 에 대한 소개, 참조 하 십시오. Lambda 표현 식 (Visual Basic) 과 Lambda 표현 식 (C \ # 프로 그래 밍 가이드).
C#
VB
using System;

public class LambdaExpression
{
   public static void Main()
   {
      Func<string, string> convert = s => s.ToUpper();

      string name = "Dakota";
      Console.WriteLine(convert(name));   
   }
}



Lambda 표현 식 의 기본 형식 은 범 형 입 니 다. Func 의뢰 의 하나. 이렇게 하면 매개 변수 형식 으로 lambda 표현 식 을 전달 할 수 있 으 며, 명시 적 으로 의뢰 에 배분 하지 않 아 도 됩 니 다. 특히 System.Linq 네 임 스페이스 에는 여러 가지 방법 이 있 습 니 다. Func 매개 변 수 는 이러한 방법 에 lambda 표현 식 을 전달 할 수 있 으 며, 명시 적 으로 Func < T, TResult > 를 예화 하지 않 아 도 됩 니 다. 의뢰
예시
다음 예제 에 서 는 어떻게 설명 하고 사용 하 는 지 보 여 줍 니 다. Func 의뢰 이 예제 에서 하 나 를 설명 합 니 다. Func 변 수 는 문자열 의 문 자 를 대문자 로 변환 하 는 lambda 표현 식 을 할당 합 니 다. 이후 이 방법 을 봉인 하 는 의뢰 를 전달 합 니 다. Enumerable.Select 방법 은 문자열 배열 의 문자열 을 대문자 로 변경 합 니 다.
C#
VB
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;

static class Func
{
   static void Main(string[] args)
   {
      // Declare a Func variable and assign a lambda expression to the  
      // variable. The method takes a string and converts it to uppercase.
      Func<string, string> selector = str => str.ToUpper();

      // Create an array of strings.
      string[] words = { "orange", "apple", "Article", "elephant" };
      // Query the array and select strings according to the selector method.
      IEnumerable aWords = words.Select(selector);

      // Output the results to the console.
      foreach (String word in aWords)
         Console.WriteLine(word);
   }
}      
/*
This code example produces the following output:

   ORANGE
   APPLE
   ARTICLE
   ELEPHANT
*/

좋은 웹페이지 즐겨찾기