返回首页


这是我早期的博客文章的延伸。我自己,发现在C#中使用的最强大的类型之一的代表。它有助于以书面形式非常灵活,可扩展性的方案。
我已经讨论了我在去年的博客,在传统的方式,我们需要编写更多的代码。在那里,我还讨论了一个预定义的委托该框架提供的Action委托。有四个口味提供Action委托。
一个预定义的委托类型。NET提供的是对应的Action委托。正如我们所看到的,它总是返回void。但功能的void返回值,而不是动作。
也有5 F​​unc委托所提供的口味。它们是:

Public delegate TResult Func<TResult>()
{C}
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;

}

}

这也是作为Ac​​tion委托,即相同,它也可以使用匿名函数和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();

}

}
lambda函数
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
{七}

回答

评论会员:蒂利普Baboo 时间:2012/01/26
太好了!为感谢让我意识到这种漂亮的功能。好文章
评论会员:Brij 时间:2012/01/26
感谢蒂利普
干杯!!
Brij
访问我的博客:{A}

我的最新文章:给它一个视图
{A2}