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);
}
}