这是我早期的博客文章的延伸。我自己,发现在C#中使用的最强大的类型之一的代表。它有助于以书面形式非常灵活,可扩展性的方案。
我已经讨论了我在去年的博客,在传统的方式,我们需要编写更多的代码。在那里,我还讨论了一个预定义的委托该框架提供的Action委托。有四个口味提供Action委托。
一个预定义的委托类型。NET提供的是对应的Action委托。正如我们所看到的,它总是返回void。但功能的void返回值,而不是动作。
也有5 Func委托所提供的口味。它们是:
{C}
Public delegate TResult Func<TResult>()
Public delegate TResult Func<T, TResult>(T t) // Take one input parameter
// and return a value
Public delegate TResult Func<T1, T2, TResult>(T1 t1, T2 t2) // Take 2 input
// parameters and return a value
Public delegate TResult Func<T1, T2, T3, TResult>(T1 t1, T2 t2, T3 t3) // Take 3
// input parameter and return a value
Public delegate TResult Func<T1, T2, T3, T4, TResult>
(T1 t1, T2 t2, T3 t3,T4 t4) // Take 4 input parameter and return a value
如果我们看到的宣言,TResult是放在最后,这只是一个约定。人们可以把它的S /他想的地方。
首先,让我们来看看第一位的,不带参数和返回值:public class Program
{
static void Main(string[] args)
{
//Creating the Func variable and assigning it a function
Func<string> myFunc = SayHello;
//Calling function using Func Delegate
string returnedString = myFunc();
Console.WriteLine(returnedString);
Console.ReadKey();
}
private static string SayHello()
{
return "Hello Dude!!";
}
}
现在,让我们的移动代码Func委托的另一个重载。它有两个输入参数,并返回一个值。public class Program
{
static void Main(string[] args)
{
//Creating the Func variable (which takes two input parameters and returns a value)
//and assigning it a function
Func<double, double, double> myFunc1 = Add;
//Calling function using Func Delegate
double sum = myFunc1(3.5, 4.5);
Console.WriteLine(sum);
Console.ReadKey();
}
private static double Add(double first, double second)
{
return first + second;
}
}
这也是作为Action委托,即相同,它也可以使用匿名函数和lambda函数。让我们在两个快看:匿名函数
lambda函数public class Program
{
static void Main(string[] args)
{
//Creating the Func variable (which takes three input parameters and returns a value)
//and assigning it an Anonyomus function
Func<double, double, double, double> myFunc1 = delegate(double d1, double d2, double d3)
{
return d1 + d2 + d3;
};
//Calling function using Func Delegate
double sum = myFunc1(3.5, 4.5, 5.5);
Console.WriteLine(sum);
Console.ReadKey();
}
}
public class Employee
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Program
{
static void Main(string[] args)
{
Func<Employee,string> checkEmployee = s=>{
if (s.Id > 11)
return s.Name;
else
return "Employee is not with the given Criteria.";
};
Console.WriteLine(checkEmployee(new Employee() {Id=12, Name="Brij"}));
Console.WriteLine(checkEmployee(new Employee() {Id=10, Name="Abhijit"}));
Console.ReadKey();
}
}
希望大家喜欢的代表。
我们使用代表了很多。但我们大多数人在方案中使用的传统方式。当我第一次了解到这些行动和Func代表在几个星期前,我发现它们非常有用。它可以帮助我们编写更好的和组织良好的代码,这也是不容易出错。我跟不少开发商,他们没有任何有关这些预定义的代表的想法。所以我想与大家分享。
请分享您的宝贵意见。
的欢呼声,
Brij
{七}