【发布时间】:2009-07-14 14:12:23
【问题描述】:
在 C# 中,假设您有一个对象(例如,myObject),它是类 MyClass 的实例。
仅使用myObject,您将如何访问MyClass 的静态成员?
class MyClass
{
public static int i = 123 ;
}
class MainClass
{
public static void Main()
{
MyClass myObject = new MyClass() ;
myObject.GetType().i = 456 ; // something like this is desired,
// but erroneous
}
}
【问题讨论】:
-
你能解释一下为什么不能更直接地引用它吗?这里有一点代码味道。
-
我的方法接受一个 Block 类型的参数,但实际传递的参数是 Block 的几个 子类 之一的一个类,每个子类是拥有自己的静态成员副本(这个角色在我的问题代码中由“i”扮演)。
-
恕我直言,通常是“我该怎么做?”的最佳答案。是“不要那样做”。我强烈怀疑这是其中之一。
-
是的,与拥有总是可以返回适当值的多态属性相比,这感觉像是一种丑陋(且缓慢)的方式。
-
(有关示例,请参见我编辑的答案。)