0
// method 1
public void RegisterPlayer(Player player)
{
    var mysealedClass = new GreatSubscription
    {
        player_0 = player,
        Subscription = this
    };

    Subscribe(_registeredPlayers, player, PlayerTypes.Player, mysealedClass.Register);
}

// Method 2
private void Subscribe<T>(CachedSynchronizedDictionary<T, int> subscribers, 
    T subscriber, PlayerTypes type, Func<bool> isRegistered) where T: Player
{
// There is some code here -- intentionally omitted, since it is irrelevant
}

// Method 3
protected virtual bool OnRegisterPlayer(Player myplayer)
{
    return false;
}

// Sealed Class
private sealed class GreatSubscription
{
    public Subscription NewSubscription;
    public Player NewPlayer;

    public bool Register()
    {
        return NewSubscription.OnRegisterPlayer(NewPlayer);
    }
}

我想在方法 1 中使用匿名方法并摆脱 mysealedClass 及其引用,但我rs在 lambda 之前收到错误“不兼容的匿名函数签名”。我究竟做错了什么 ?

任何帮助,将不胜感激。

当我按如下方式编写方法1时:

// method 1
public void RegisterPlayer(Player player)
{                  
   Subscribe(_registeredPlayers, player, PlayerTypes.Player, rs => this.OnRegisterPlayer(player));
}
4

1 回答 1

1

您的 lambda 接受一个参数,但isRegistered它是 a Func<bool>,它不接受任何参数。删除rs参数:

Subscribe(_registeredPlayers, player, PlayerTypes.Player, () => this.OnRegisterPlayer(player));
于 2013-11-05T05:47:55.897 回答