在另一个类中声明变量 - 优点和缺点

时间:2013-07-08 00:55:56

标签: c# class variables

我是C#的初学者,我正在尝试理解在不同范围内声明变量的效果。是否存在明显的性能差异:

示例1

class A
{
   static int i;
   static string temp;
}

class B
{
   while(true)
   {
       A.i=10;
       A.temp="Hello";
   }
}

示例2

class B
{
   int i;
   string temp;
   while(true)
   {
       i=10;
       temp="Hello";
   }
}

示例3

class A
{
   public int i;
   public string temp;
}

class B
{
A D = new A();
   while(true)
   {
       D.i=10;
       D.temp="Hello";
   }
}

1 个答案:

答案 0 :(得分:3)

第一个代码片段共享两个变量:它们是静态分配的,所有线程都会在并发环境中使用它们。这非常糟糕 - 应该避免在生产代码中出现类似情况。

第二个和第三个代码片段是线程安全的。第三个代码段对变量itemp进行分组;第二个片段没有。另外,第三个片段需要额外分配一个对象,并在返回时创建一个要收集的对象(当然它因为无限while (true)循环而永远不会返回,所以它并不重要)。

如果两个变量在逻辑上不属于同一个,则应避免为它们创建类。如果它们属于一起,则应将使用这些变量的代码移动到声明它们的类中。

就性能和内存含义而言,第三个片段与第二个片段相比需要额外的一块内存,但它太小而无法注意。几乎不可能检测到性能差异,因此您不必过于担心:在大多数情况下,最好优化代码以提高可读性。