C# 实例方法是否不在c中创建对象引用#
我正在用c#开发一个asp.net web应用程序。我有一个名为GetUser的公共类。在该类中,我有一个名为GetCurrentUser的方法。方法如下:C# 实例方法是否不在c中创建对象引用#,c#,asp.net,static-methods,instance-methods,C#,Asp.net,Static Methods,Instance Methods,我正在用c#开发一个asp.net web应用程序。我有一个名为GetUser的公共类。在该类中,我有一个名为GetCurrentUser的方法。方法如下: public MobileUser GetCurrentUser(MDMDataContext dc, string userCode) { using (dc) { dc.ObjectTrackingEnabled = false; var c
public MobileUser GetCurrentUser(MDMDataContext dc, string userCode)
{
using (dc)
{
dc.ObjectTrackingEnabled = false;
var currentUser =
from MobileUser in dc.MobileUsers
where MobileUser.UserCode == usercode
select MobileUser;
MobileUser mu = new MobileUser();
mu = currentUser.Single();
return mu;
}
}
using (MDMDataContext dc = new MDMDataContext())
{
GetUser.GetCurrentUser(dc, "ABCD");
}
但当我尝试使用GetCurrentUser实例方法时,如下所示:
public MobileUser GetCurrentUser(MDMDataContext dc, string userCode)
{
using (dc)
{
dc.ObjectTrackingEnabled = false;
var currentUser =
from MobileUser in dc.MobileUsers
where MobileUser.UserCode == usercode
select MobileUser;
MobileUser mu = new MobileUser();
mu = currentUser.Single();
return mu;
}
}
using (MDMDataContext dc = new MDMDataContext())
{
GetUser.GetCurrentUser(dc, "ABCD");
}
我得到以下错误,“非静态字段、方法或属性“…GetUser.GetCurrentUser…”的对象引用
但是如果我将static关键字添加到函数中,错误就会消失。有人能帮我解开这个概念吗?您的方法是实例方法,这意味着您需要一个实例来运行它:
using (MDMDataContext dc = new MDMDataContext())
{
GetUser user = new GetUser();
user.GetCurrentUser(dc, "ABCD");
}
static
关键字意味着该方法是静态的,可用于整个类型,而不绑定到特定实例。这就是为什么当它标记为static时,可以使用类名调用它(并且必须这样调用它)。您的方法是实例方法,这意味着您需要一个实例来运行它:
using (MDMDataContext dc = new MDMDataContext())
{
GetUser user = new GetUser();
user.GetCurrentUser(dc, "ABCD");
}
static
关键字意味着该方法是静态的,可用于整个类型,而不绑定到特定实例。这就是为什么可以使用类名调用它(并且必须以这种方式调用它)当它被标记为static时。要添加-static
方法只能访问类中的其他static
对象,因为它们与特定实例无关。我昨天在试图弄明白这一点时感到一阵偏头痛。我正在创建函数返回类型的实例,而不是包含函数的类选项。如果我现在理解正确,如果不创建包含方法定义的类的实例,您就无法使用实例方法。要添加到该类中-静态
方法只能访问类中的其他静态
对象,因为它们与特定实例无关。昨天,我在尝试请解决此问题。我正在创建函数返回类型的实例,而不是包含函数的类。如果我现在理解正确,如果不创建包含方法定义的类的实例,则无法使用实例方法。