日期:2014-05-18  浏览次数:20963 次

c#中静态方法给静态变量附值
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _110628Ckaoshi
{

  class Program
  {
  static int i = getNum();
  int j = getNum();
  static int num = 1;
  static int getNum()
  { return num; }
  [STAThread]

  static void Main(string [] args)
  {
  Console.WriteLine(string.Format("i={0}",i));
  Console.WriteLine(string.Format("j={0}",new Program().j));
  Console.Read();
  }
  }
}
有这样的代码;
结果是:i=0
  j=1;
我想请教一下,为什么i会得”0“呢?

------解决方案--------------------
静态变量是先初始化的
所以执行的步骤应该是:先定义i,这时候到getNum()方法,返回num,此时num还没有被赋值,所以是i=0.
后面的j=1也就不难解释了。



楼主可以看看这个例子 输出什么?
C# code
using System;
class A
{
   public static int X;
   static A() {
      X = B.Y + 1;
   }
}
class B
{
   public static int Y = A.X + 1;
   static B() {}
   static void Main() {
      Console.WriteLine("X = {0}, Y = {1}", A.X, B.Y);
   }
}