无法访问静态上下文中的非静态字段

本文关键字:静态 字段 上下文 访问 | 更新日期: 2023-09-27 18:19:59

我在Visual Studio 2010中编写声明Cannot access non-static field _cf in static context的代码时遇到错误,有人能解释我收到此消息的原因吗?如果可能的话,如何解决此问题?

CommonFunctions.cs

namespace WebApplication1.Functions
{
    public class CommonFunctions
    {
        public string CurrentUser()
        {
            string login = HttpContext.Current.User.ToString();
            string[] usplit = login.Split('''');
            string name = usplit[1];
            return name;
        }
    }
}

Team.aspx.cs

namespace WebApplication1
{
    public partial class Team : System.Web.UI.Page
    {
        private readonly CommonFunctions _cf = new CommonFunctions();
        public string CurrentUser = _cf.CurrentUser();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(CurrentUser))
            {
                // Do stuff here
            }
            else
            {
                // Do other stuff here
            }
        }
    }
}

我可以将CurrentUser代码直接放入protected void Page_Load函数中,但由于我需要在整个项目中重用CurrentUser,因此复制它似乎很可笑。

如有任何帮助,我们将不胜感激:-)

无法访问静态上下文中的非静态字段

在构造函数中设置会更有意义:

namespace WebApplication1
{
    public partial class Team : System.Web.UI.Page
    {
        private readonly CommonFunctions _cf;
        public string CurrentUser;
        public Team() 
        {
            _cf = new CommonFunctions();
            CurrentUser = _cf.CurrentUser();
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(CurrentUser))
            {
                // Do stuff here
            }
            else
            {
                // Do other stuff here
            }
        }
    }
}

不能通过调用_cf字段上的方法来初始化当前用户字段。这两个字段没有执行的特定顺序。CurrentUser可以先初始化。