0

在我的 C# 项目中,我有调用其他方法的方法,如下所示:

options = ReferenceUtilities.GetMenuStatuses();

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

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

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

4

4 回答 4

2

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

但是,需要添加的重要一点:在 Properties/Assemblyinfo.cs 中,您可以添加 [assembly: InternalsVisibleTo("something")] 语句,它允许您从不同的程序集访问内部方法。

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

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

于 2014-09-30T19:11:27.903 回答
1

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

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

于 2012-10-13T23:44:20.290 回答
1

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

  • internal:其他程序集中的代码不可见,仅在此程序集中可见
  • private:对其他类不可见。仅在此类中可见
  • public:对其他类或程序集可见 [for class]
于 2012-10-13T23:52:37.900 回答
0

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

与往常一样,也有例外,但这是一个很好的一般规则。

更进一步,服务类(即仅用于提供服务或特性的方法)应该实现定义该服务或特性的契约的接口。其他类应该传递该接口的一个实例,以便只有接口方法可用。

于 2012-10-13T23:46:17.933 回答