public class Rational
{
protected static Rational one; public static Rational One { get { return one; } } protected static Rational zero; public static Rational Zero { get { return zero; } } { public int N { get; set; } public int M { get; set; } static Rational() { one = new Rational(1, 1); zero = new Rational(0, 1); } public Rational(int n, int m) { N = n; M = m; } public override string ToString() { return string.Format("{0}/{1}", N, M); } }
static void Main(string[] args) { Rational r1 = Rational.One;//r1 is 1/1 Rational r2 = Rational.Zero;//r2 is 0/1 Rational r = new Rational(1, 2); Rational r3 = Rational.One;//r3 is 1/1 Rational r4 = Rational.Zero;//r4 is 0/1 } 但是:
public class Ra { protected static Rational one; public static Rational One { get { return one; } } protected static Rational zero; public static Rational Zero { get { return zero; } } } public class Rational:Ra { public int N { get; set; } public int M { get; set; } static Rational() { one = new Rational(1, 1); zero = new Rational(0, 1); } public Rational(int n, int m) { N = n; M = m; } public override string ToString() { return string.Format("{0}/{1}", N, M); } }
static void Main(string[] args) { Rational r1 = Rational.One;//r1 is null Rational r2 = Rational.Zero;//r2 is null Rational r = new Rational(1, 2); Rational r3 = Rational.One;//r3 is 1/1 Rational r4 = Rational.Zero;//r4 is 0/1 }字段在类中,静态构造函数会在第一次调用属性之前调用初始化静态字段,但是字段继承于基类,静态构造不会在调用属性之前初始为,而是在实例化类之后初始化,什么原因,什么解决办法?
1 回答
- 1 回答
- 0 关注
- 216 浏览
添加回答
举报
0/150
提交
取消