在C#中,const和static成员变量可以:

时间:2015-08-19 01:09:17

标签: c# static const

这是我被问到的一个面试问题。我不确定答案。

  

在C#中const和静态成员变量都可以:

     

A)在类的静态构造函数,静态方法或实例方法中设置   B)第一次初始化课程后的变化   C)只能在实例构造函数中设置   D)在没有班级实例的情况下访问   E)由公共财产的集合访问者设置。

我选择了" A"即使我不确定他们的意思。我不知道是否选择A或E.因为我已经没时间了,所以我选择了A.我可能应该选择E。

A)我的问题在于它说"实例方法。"
B)他们不会改变 - 错误 C)静态方法或类的构造函数是否为" Instance Constructor?"我知道你可以有一个静态构造函数 D)如何在没有实例的情况下访问常量? - 假 E)不确定。我想这可能是真的。

有人可以解释一下吗?谢谢!

4 个答案:

答案 0 :(得分:4)

  

在C#中const和静态成员变量都可以:

     

A)在类的静态构造函数,静态方法或实例方法中设置   B)第一次初始化课程后的变化   C)只能在实例构造函数中设置   D)在没有班级实例的情况下访问   E)由公共财产的集合访问者设置。

A)您无法设置常量,您只能定义它。您可以在任何可以定义变量的地方定义常量,但是 set 这个词意味着这个选择是错误的。

B)你绝对不能改变一个常数,所以它不是B。

C)不正确,如上(A)

D)好的,你可以写MyClass.MyConstMyClass.MyStatic

E)不正确,您无法更改常量。

所以答案是D。

答案 1 :(得分:2)

答案是D.任何公共,受保护或内部的常量或静态成员都可以在没有实例的类外访问。

将const视为值类型static readonly变量。另外,将它们标记为const允许编译在编译时使用优化。

答案 2 :(得分:1)

答案是D。

可以在没有实例的情况下访问静态成员或属性和const。

var x = Foo.StaticProperty;

将const视为无法在运行时更改的静态值。

E不正确,因为您根本无法设置const。

答案 3 :(得分:1)

答案的快速细分:

A)错误,因为const未在静态构造函数中设置。

B)错误,在声明后无法更改const的值

C)False,再次声明后无法设置const。您可以在实例方法(和ctors)中设置static个变量,但一旦定义它就无法更改const

D)True - 您不需要该类的实例来访问它们。

E)错误,再次,const s无法更改......