TSource和TResult
/*
Func<TResult>和Func<TSource, TResult>
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConAppTRusult
{
class Program
{
static void Main(string[] args)
{
var obj = new User();
obj.TestTResult();
}
}
class User
{
public int ID { get; set; }
public string Name { get; set; }
public char Sex { get; set; }
public int Age { get; set; }
public List<User> GetUser()
{
var list = new List<User>();
var u1 = new User();
u1.ID = 1;
u1.Name = "Alan";
u1.Sex = 'M';
u1.Age = 33;
list.Add(u1);
var u2 = new User();
u2.ID = 2;
u2.Name = "Betty";
u2.Sex = 'F';
u2.Age = 31;
list.Add(u2);
var u3 = new User();
u3.ID = 3;
u3.Name = "Cora";
u3.Sex = 'F';
u3.Age = 27;
list.Add(u3);
return list;
}
public static List<User> GetUserList()
{
return new List<User>();
//return new User().GetUser();
}
public static List<User> GetUserListByModel(User model)
{
return new List<User>();
//return new User().GetUser();
}
public static TResult GetModelList<TResult>(Func<TResult> GetFunc)
{
return default(TResult);
}
public static TResult GetModelList<TSource, TResult>(Func<TSource, TResult> GetFunc)
{
return default(TResult);
}
public static TResult GetModelList2<TResult>(Func<TResult> GetFunc) where TResult : class //where TResult : List<User>
{
//return default(TResult);
return new User().GetUser() as TResult;
}
public static TResult GetModelList2<TSource, TResult>(Func<TSource, TResult> GetFunc) where TResult : List<User>
{
//return default(TResult);
return new User().GetUser() as TResult;
}
public void TestTResult()
{
GetModelList(GetUserList);
//GetModelList(GetUserListByModel);
GetModelList((User User) => GetUserListByModel(User));
//var list = new User().GetUser();
//var list = GetUserList();
//var list = GetModelList(GetUserList); //error: list is null
var list = GetModelList2(GetUserList); //right: list is not null
//var list = GetModelList2((User User) => GetUserListByModel(User));//right: list is not null
foreach (var item in list)
{
Console.WriteLine(item.ID + "-" + item.Name+"-"+item.Sex+"-"+item.Age);
}
//下面语句等价
//GetModelList2(GetUserList) <=> GetModelList2<List<User>>(GetUserList);
}
}
}
版权所有,转载请注明文章出处 http://blog/youkuaiyun.com/cadenzasolo