无法访问静态上下文中的非静态字段
本文关键字:静态 字段 上下文 访问 | 更新日期: 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可以先初始化。