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

c# – (为什么)调用扩展方法首选…方式?

发布时间:2020-12-15 23:35:17 所属栏目:百科 来源:网络整理
导读:我正在使用刚刚发布的Resharper版本(2016.2.2)重新解析我的解决方案 它标记这行代码: ReportRunnerConstsAndUtils.ConvertValueToAppropriateTypeAndAssign(totalPackagesCell,packages); …暗示我应该“调用扩展方法” 如果我默认,它会改变这一行: totalP
我正在使用刚刚发布的Resharper版本(2016.2.2)重新解析我的解决方案

它标记这行代码:

ReportRunnerConstsAndUtils.ConvertValueToAppropriateTypeAndAssign(totalPackagesCell,packages);

…暗示我应该“调用扩展方法”

如果我默认,它会改变这一行:

totalPackagesCell.ConvertValueToAppropriateTypeAndAssign(packages);

这是否更好?如果是这样,怎么样?为什么?

这是被调用的方法,它位于“ConstsAndUtils”类中:

// Adapted from https://stackoverflow.com/questions/26483496/is-it-possible-to-ignore-excel-warnings-when-generating-spreadsheets-using-epplu
public static void ConvertValueToAppropriateTypeAndAssign(this ExcelRangeBase range,object value)
{
    string strVal = value.ToString();
    if (!String.IsNullOrEmpty(strVal))
    {
        decimal decVal;
        double dVal;
        int iVal;

        if (decimal.TryParse(strVal,out decVal))
            range.Value = decVal;
        if (double.TryParse(strVal,out dVal))
            range.Value = dVal;
        else if (Int32.TryParse(strVal,out iVal))
            range.Value = iVal;
        else
            range.Value = strVal;
    }
    else
        range.Value = null;
}

解决方法

正如一些评论所指出的,这至少部分是偏好问题.就个人而言,我认为在这里使用扩展方法更“清洁”和更清晰,但有些人可能不同意这一点.

“引擎盖下”,当然,扩展方法是一个静态方法(不是一个实际的实例方法),只是编译器在这里给你一些语法糖(但除此之外).

(编辑:李大同)

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

    推荐文章
      热点阅读