【问题标题】:What is the correct usage of C# var when using the interface members?使用接口成员时,C# var 的正确用法是什么?
【发布时间】:2011-03-15 11:06:26
【问题描述】:

下面是接口及其实现。

interface ICompanyService
{
    Company GetCompany();
}

public class CompanyService : ICompanyService
{
    public Company GetCompany()
    {
        //Do something
        return new Company();

    }
}

现在如果“companyService”下面是上面ICompanyService的实现,哪个更好(A或B),为什么?

  var company = companyService.GetCompany(); //.....A

  Company company = companyService.GetCompany(); //.....B

【问题讨论】:

    标签: c#-4.0 var


    【解决方案1】:

    它们在下面是相同的。

    A 因为可读性更好。但这是主观的。有些人喜欢排长队。

    【讨论】:

    • 我认为 B 更具可读性。例如 GetCompany 可以返回,即 ICompany。如果我们使用 var,则不明显。
    • @Joel 我说过,这是主观的。接口不应该定义结构而是行为。
    【解决方案2】:

    就像 Arnis 所说,它们在下面是相同的。 在这种情况下,我个人更喜欢 B,因为您无法仅通过查看语句来查看返回类型。

    【讨论】:

    • 这就是命名的目的。变量 company 对我来说似乎很明显。
    • 在示例中这是正确的,但通常您可以让方法返回一个接口,或者可以有多个公司类; SmallCompany、LargeCompany 等等。无论如何,我更喜欢 var 只有当我可以通过查看方法看到返回类型(显式)时才使用。
    • 如果您需要知道界面下面的内容 - 您正在滥用它们并且做错了
    • @Arnis 好的,接口可能是个坏例子。但是如果该方法返回一个数据行 f.ex. 怎么办?
    • @Arnis,我不认为这是滥用。代码应该更容易阅读和理解。这可能不是很好的例子,但一般来说,如果返回类型不明显,我认为 var 不是一个好的选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-06
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-13
    相关资源
    最近更新 更多