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也就不难解释了。
楼主可以看看这个例子 输出什么?
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); }}