看你的代码没有错误,也不是执行顺序问题。
UserBll.Current是什么,是一个UserBll的实例,即UsersBLL instance=new UsersBLL();
看到new了,也就是所有的成员初始化完成了。
dal 不是没有初始化,是初始化为null了,应该是 DataAccess.CreateUsers()方法返回了null。
没可能的,其他地方错了。
执行顺序当然是从上到下执行的,因为private readonly IUsers dal=DataAccess.CreateUsers(); 它不是静态的吧,你调用 Current方法,当然要实例化一下了
在构造函数中初始化dal对象,因为你这样写,当走到第四行代码的时候,DataAccess对象还不存在,所以就报错了。
DataAccess.CreateUsers(); 楼主贴下这个方法的代码
顺便也贴下Add方法
1 class UsersBLL 2 { 3 private static readonly UsersBLL instance = new UsersBLL(); 4 private readonly string str =DataAccess.CreateUsers(); 5 public UsersBLL() 6 { } 7 public static UsersBLL Current 8 { 9 get 10 { 11 return instance; 12 } 13 } 14 15 public string Add() 16 { 17 return str; 18 } 19 } 20 21 class DataAccess 22 { 23 public static string CreateUsers() 24 { 25 return "ping"; 26 } 27 }
1 Console.WriteLine(UsersBLL.Current.Add());
@chenping2008:
输出的结果是 ping