C# 实例方法是否不在c中创建对象引用#

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

我正在用c#开发一个asp.net web应用程序。我有一个名为GetUser的公共类。在该类中,我有一个名为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");
        }
但当我尝试使用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
对象,因为它们与特定实例无关。我昨天在试图弄明白这一点时感到一阵偏头痛。我正在创建函数返回类型的实例,而不是包含函数的类选项。如果我现在理解正确,如果不创建包含方法定义的类的实例,您就无法使用实例方法。要添加到该类中-
静态
方法只能访问类中的其他
静态
对象,因为它们与特定实例无关。昨天,我在尝试请解决此问题。我正在创建函数返回类型的实例,而不是包含函数的类。如果我现在理解正确,如果不创建包含方法定义的类的实例,则无法使用实例方法。