加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

干修复可能性,C#

发布时间:2020-12-15 19:27:00 所属栏目:百科 来源:网络整理
导读:这段代码一直困扰着我,部分原因是因为 if (result != OpResult.Success) { // return 代码重复,到处都是. 执行一系列(1..n)评估.在每次评估之后,进行检查以确保操作成功(利用从枚举派生的自定义返回值):OpResult.Success. 这是一个例子(带有示例对象等): O
这段代码一直困扰着我,部分原因是因为

if (result != OpResult.Success) { // return

代码重复,到处都是.

执行一系列(1..n)评估.在每次评估之后,进行检查以确保操作成功(利用从枚举派生的自定义返回值):OpResult.Success.

这是一个例子(带有示例对象等):

OpResult result = OpResult.Sucess;

result = performOperationOne(commonObjectArgument);

if (result != OpResult.Success)
{
    trace.Exit(); // Exit logging mechanism
    return result;
}

result = performOperationTwo(commonObjectArgument);

if (result != OpResult.Success)
{
    trace.Exit();
    return result;
}

如您所见,如果(result!= OpResult.Success)用作流控制,即除非所有先前的操作都成功,否则下一个操作将不会运行.

使用.Net 4. *,C#在语法上已经具备了一些非常令人难以置信的功能.我可以采取哪些措施来消除每次操作后需要重新编写此评估的内容吗?

解决方法

一种可能性是构建操作列表并在循环中执行它们:

var operations = new List<Func<CommonObjectArgumentType,OpResult>>
{
    Operation1,Operation2
};

OpResult result = OpResult.Success;
foreach (var op in operations)
{
    result = op(commonObjectArgument);
    if (result != OpResult.Success)
    {
        trace.exit();
        return result;
    }
}

// all operations were successful

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读