繁体   English   中英

对于调用其他方法的方法,我应该使用“内部”还是“私有”而不是“公共”?

[英]Should I be using “internal” or “private” instead of “public” for methods that call other methods?

在我的C#项目中,我有一些方法可以像这样调用其他方法:

options = ReferenceUtilities.GetMenuStatuses();

在我的ReferenceUtilities中,我编写了代码:

   internal static SelectList GetMenuStatuses()
    {
        throw new NotImplementedException();
    }

但是我应该使用内部还是私有的? 我不确定这里的区别。

正如人们已经回答的那样,内部意味着该成员可以被同一程序集中的其他代码访问。 private表示可以从同一类中的其他代码访问它。

但是,要添加的一个重要点:在Properties / Assemblyinfo.cs中,可以添加[assembly:InternalsVisibleTo(“ something”)]语句,该语句使您可以从其他程序集中访问内部方法。

这对于单元测试非常有用,并且是有时使用内部而非私有的一个很好的理由。

(关于是否进行内部单元测试的争论很大,但是很高兴知道这种可能性。)

internal表示该成员可以被同一程序集中的其他代码访问。 private表示可以从同一类中的其他代码访问它。

这与该方法是否调用其他方法无关。

internal在程序集之间,而private在类之间

  • 内部:对其他程序集的代码不可见,仅在此程序集中可见
  • 私人:其他班级不可见。 仅在此类中可见
  • public:对其他类或程序集可见[对于类]

内部意味着同一程序集中的其他类可以看到该方法。 私有意味着只有定义了方法的类才能看到它。 如果仅由定义该方法的类调用该方法,请使用private。 否则,请使用内部。 仅当程序集外部的类需要直接调用该方法时,才应使用public。

和往常一样,也有例外,但这是一个很好的通用规则。

再进一步,服务类(即仅用于提供服务或功能的方法)应实现定义该服务或功能的合同的接口。 其他类应绕过该接口的实例,以便仅接口方法可用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM