我们都知道匿名类的定义可以用属性,如:var obj = new { Name = "crab", Age = 23 };那么我们如何在匿名类中定义方法呢?就像JAVA中可以对匿名类定义匿名方法。首先我想到了委托,定义一个委托 public delegate string SayHelloHandler( string name );然后定义一个与该委托相同方法签名的方法public string MySayHello( string name ) { return string.Format( "Hello, {0}!", name ); }最后定义匿名类var obj = new { Name = "crab", Age = 23 , SayHello = new SayHelloHandler( MySayHello ) }; 调用方法:obj.SayHello( "nanhuacrab" );经测试这是一种可行的方案。 接着我想到了匿名方法,var obj = new { Name = "crab", Age = 23 , SayHello = delegete( string name ) { return string.Formate( "Hello, {0}!", name ); } };经测试此方案不行。 最后想到了Lambda表达式,var obj = new { Name = "crab', Age = 23, SayHello = (name) => { return string.Formate( "Hello, {0}!", name ); } };经测试此方案也不行。
2 回答
梦里花落0921
TA贡献1772条经验 获得超6个赞
using System.Collections.Generic;
using System;
class P
{
delegate string X(string name);
static void Main()
{
var obj = new { Name = "crab",
Age = 23,
SayHello = (X)((string name) => string.Format( "Hello, {0}!", name ))
};
}
}
- 2 回答
- 0 关注
- 739 浏览
添加回答
举报
0/150
提交
取消