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

我们都知道匿名类的定义可以用属性,如:

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 ); } };

经测试此方案也不行。


冉冉说
浏览 740回答 2
2回答

梦里花落0921

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 ))     };        }}
打开App,查看更多内容
随时随地看视频慕课网APP