2013-02-18 94 views
-4

我有一个棘手的情况,请让我形容它,我有公共类的几个领域如下:访问对象保护的静态字段从它自身的静态方法

public class TextClass 
{ 
     protected static readonly TraceSwitch Ts = new TraceSwitch(); 
     protected static readonly TraceAction Th = new TraceHelper(); 

     public TextClass() 
     { 
     } 

     public static void TakToSaTuAKODOSTANEM() 
     { 
      // i want to access to fieldd 'Ts' and 'Th' here! 
     } 
    } 

我意识到,当我访问方法已经创建了类的静态字段。 你觉得呢?

编辑1: 好,我写了一个小错误,我可以访问它就是这样,但问题是动态地访问他们通过反射,因为我需要更多的不同的对象来使用它。

编辑2: 感谢球员我提出了我的观点,我将关闭线程。

+0

当然他们,你只要实例化他们在你的代码的第2行! – ken2k 2013-02-18 14:08:02

+1

当你尝试时会发生什么? – 2013-02-18 14:09:35

+0

你有什么麻烦? – 2013-02-18 14:09:52

回答

-1

两个字段是应用程序启动时初始化,所以你可以使用访问他们任何时候你想;-)

+0

Te字段在启动应用程序时未初始化。第一次通过创建类的实例或调用类的静态成员来“调用”类时,字段将被初始化。 – polkduran 2013-02-18 14:23:52

+0

@polkduran请参阅http://msdn.microsoft.com/zh-cn/library/aa645758(v=vs.71).aspx – ken2k 2013-02-18 14:28:48

+0

而http://msdn.microsoft.com/zh-cn/library/aa645612( v = vs.71).aspx说:[...]静态构造函数的执行是由在应用程序域内发生以下第一个事件触发的:•创建类的实例。 •可引用该类的任何静态成员[...]您可以进行一个简单的测试,以证明它使用一些静态字段创建一个类,并查看它们是否已初始化,而不创建任何类的实例或引用静态成员。 – polkduran 2013-02-18 14:54:25

0

您可以访问他们,他们创建的,但你不能通过this访问它们。 this引用实际实例。由于静态类没有实例,它不会工作。

你可以访问他们的TextClass.TraceSwitch

相关问题