c# - (为什么)作为扩展方法调用是首选...方式?

标签 c# resharper extension-methods resharper-2016

我正在使用刚刚发布的 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;
}

最佳答案

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

“在幕后”,当然,扩展方法是一个静态方法(不是实际的实例方法),只是编译器在这里给了你一些语法糖(但这不是重点)。

关于c# - (为什么)作为扩展方法调用是首选...方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39474634/

相关文章:

服务器控件 ASP.NET 中嵌入资源的 .js 文件中的 C# 变量

c# - 在 .Net 4.0 中找不到 JavaScriptSerializer

resharper - 防止 ReSharper 格式化特定代码块

javascript - 在 JavaScript 中组织扩展方法的最佳实践

c# - 如何在 ASP.NET Core 的 razor View 中渲染之前检查 View 组件是否存在

c# - Resharper:格式化 if 语句?

asp.net-web-api - 使用自定义授权测试异步 Web api 方法

c# - 扩展方法取代了 C# 中的标准方法

c# - 显式使用扩展方法

c# - ReportViewer RDLC - Azure 网站错误 80004005