【问题标题】:How could this be shortened?这怎么可能缩短?
【发布时间】:2012-12-22 20:48:48
【问题描述】:

我这里有这段代码:

public void SendID(int id)
{
    try
    {
        binaryWriter.Write((int)Command.ID);

        // part differening each time
        binaryWriter.Write(id);
        // end of part differing each time
    }
    catch (Exception ex)
    {
        if (Error != null)
            Error(this, new ErrorEventArgs(ex));
    }
}

我想概括这个函数,因为 try/catch 和 Write(Command) 在这些方法中的每一个上总是相等的。现在我想知道最有效的方法是什么?

基本上我想到了一个这样的方法:

public void SendCommand(Command cmd, Action<BinaryWriter> action)
{
    try
    {
        binaryWriter.Write((int)Command.ID);
    }
    catch (Exception ex)
    {
        if (Error != null)
            Error(this, new ErrorEventArgs(ex));
    }
}

然后我无法指定我可能拥有的任何其他参数(例如字符串消息)。

另一种可能性是将参数更改为 object 类型,但 BinaryWriter 不知道要访问什么,我每次都必须进行明确的对话。有什么想法吗?

【问题讨论】:

    标签: c# delegates action binarywriter


    【解决方案1】:

    我认为这很好。您可以按照以下方式调用您的新方法:

    SendCommand(cmd, binaryWriter =&gt; binaryWriter.DoSomething(msg));

    【讨论】:

    • 哦,是的,这很酷 =) 但有时我想做的不止这些:我认为 LINQ 使这成为可能 :) 谢谢!
    猜你喜欢
    • 2013-02-20
    • 1970-01-01
    • 2015-03-13
    • 2020-10-08
    • 2022-01-24
    • 2011-01-31
    • 2017-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多