- 一、Func 委托用法及作用是什么?
- 1.语法
- 2.类型参数
- 3.返回值
- 二、示例一
//delegate 委托 public delegate TResult Func();
2.类型参数封装一个方法,该方法不具有参数,且返回由 TResult 参数指定的类型的值。
3.返回值TResult
此委托封装的方法的返回值类型。
二、示例一此委托封装的方法的返回值。
创建一个控制台程序;声明两个不同返回值类型的委托,并查看其返回值
using System;
namespace Func_TResult_委托
{
///
/// Func委托 封装一个方法,该方法不具有参数,且返回由 TResult 参数指定的类型的值。
///
/// TResult此委托封装的方法的返回值。
class Program
{
static void Main(string[] args)
{
LazyValue lazyOne = new LazyValue(() => TestOne_int());
LazyValue lazyTwo = new LazyValue(() => TestOne_string("Test"));
// 获取LazyValue对象的值。
Console.WriteLine(lazyOne.Value);
Console.WriteLine(lazyTwo.Value);
Console.ReadKey();
}
static int TestOne_int()
{
Console.WriteLine("TestOne_int的返回值是:" );
return 20131118;
}
static long TestOne_string(string str)
{
Console.WriteLine("TestOne_string的返回字符串长度为:");
return (long)str.Length;
}
}
//自定义泛型类别LazyValue T, 以Funct为参数类型传递。
class LazyValue where T : struct
{
//声明一个私有委托
private Func getValue;
//构造函数 接收一个委托
public LazyValue(Func func)
{
getValue = func;
}
public T Value
{
get
{
return getValue();
}
}
}
}



