2016-07-06 50 views
0

我曾在很多项目中见过它。为什么开发人员使用内部类来存储C#中的常量变量?为什么我们在C#中使用内部类常量?

例如:

internal static class Constants 
{ 
    public const double Pi = 3.14159; 
    public const int SpeedOfLight = 300000; // km per sec. 
} 
+0

内部类与常量没有任何关系。这两者之间没有任何关系。另外,C#中的类默认是内部的(在名称空间中声明的)。 – Nasreddine

+0

你知道'internal'关键字是什么以及为什么使用它?制作“内部”类并不是强制性的,我个人认为拥有一个常数值为const的值不是一个好的设计选择。 – Jite

+0

[C#中“internal”关键字的实际用法)的可能重复(http:// stackoverflow。com/questions/165719/practical-uses-the-internal-keyword-in-c-sharp) – Kahbazi

回答

0

简单地说,设计师决定,这个类必须相同组件内使用。它不会暴露于任何引用程序集的项目,也不能从其中访问。

当你下载一个Nuget包时,你不能访问内部的类。开发者决定你不需要访问这些。所以这些值是这个包的“私有”。

更多关于访问修饰符:

市民:访问不受限制。

保护:访问限于从包含类派生的包含类或类型。

internal:访问仅限于当前程序集。

受保护的内部:访问受限于当前程序集或从包含类派生的类型。

private:Access仅限于包含类型。

0

虽然大多数的答案描述internal他们缺少我认为问题的一部分含义:为什么把常量在内部类?

这主要是因为它能他们希望通过东西的感觉就像一个命名空间,以确定的常数:

double myValue = Constants.Pi * 10; 

或者

double myValue = OtherClass.Constants.Pi * 10; 

如果没有内部类,他们看起来更像成员/属性。至少当他们不使用UPPER_CASING作为命名时。

为了使答案完整:internal用于保护常数,防止在组件外使用它们。

相关问题