为了账号安全,请及时绑定邮箱和手机立即绑定

匿名类定义中使用匿名方法和直接使用委托的不同?

匿名类定义中使用匿名方法和直接使用委托的不同?

C#
冉冉说 2018-12-25 14:13:56
我们都知道匿名类的定义可以用属性,如: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 )) 
    };
        }
}

查看完整回答
反对 回复 2018-12-29
  • 2 回答
  • 0 关注
  • 739 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信