在我的 C# 项目中,我有调用其他方法的方法,如下所示:
options = ReferenceUtilities.GetMenuStatuses();
在我的 ReferenceUtilities 中,我编写了代码:
internal static SelectList GetMenuStatuses()
{
throw new NotImplementedException();
}
但是我应该使用内部还是私有?我不确定这里的区别。
在我的 C# 项目中,我有调用其他方法的方法,如下所示:
options = ReferenceUtilities.GetMenuStatuses();
在我的 ReferenceUtilities 中,我编写了代码:
internal static SelectList GetMenuStatuses()
{
throw new NotImplementedException();
}
但是我应该使用内部还是私有?我不确定这里的区别。
正如人们已经回答的那样,内部意味着该成员可以被同一程序集中的其他代码访问。私有意味着可以从同一类中的其他代码访问它。
但是,需要添加的重要一点:在 Properties/Assemblyinfo.cs 中,您可以添加 [assembly: InternalsVisibleTo("something")] 语句,它允许您从不同的程序集访问内部方法。
这对于单元测试目的非常有用,并且是有时使用内部而不是私有的一个很好的理由。
(关于是否进行单元测试内部存在巨大的争论,但很高兴知道这种可能性。)
internal
意味着该成员可以被同一程序集中的其他代码访问。private
意味着可以从同一类中的其他代码访问它。
这与方法是否调用其他方法无关。
internal
在程序集之间,而private
在类之间
内部意味着同一程序集中的其他类可以看到该方法。私有意味着只有定义方法的类可以看到它。如果该方法只会被定义它的类调用,请使用 private。否则,使用内部。仅当程序集外部的类需要直接调用该方法时才应使用 Public。
与往常一样,也有例外,但这是一个很好的一般规则。
更进一步,服务类(即仅用于提供服务或特性的方法)应该实现定义该服务或特性的契约的接口。其他类应该传递该接口的一个实例,以便只有接口方法可用。