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

1 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 currentUser =
                from MobileUser in dc.MobileUsers
                where MobileUser.UserCode == usercode                     
                select MobileUser;

            MobileUser mu = new MobileUser();
            mu = currentUser.Single();

            return mu;
        }
    }
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用GetCurrentUser实例方法时,如下所示:

using (MDMDataContext dc = new MDMDataContext())
        {
            GetUser.GetCurrentUser(dc, "ABCD");
        }
Run Code Online (Sandbox Code Playgroud)

我收到以下错误,"非静态字段,方法或属性的对象引用' .... GetUser.GetCurrentUser ....'

但是如果我将static关键字添加到函数中,则错误就会消失.有人可以为我揭开这个概念的神秘面纱吗?

Ree*_*sey 6

您的方法是一个实例方法,这意味着您需要一个运行它的实例:

using (MDMDataContext dc = new MDMDataContext())
{
        GetUser user = new GetUser();
        user.GetCurrentUser(dc, "ABCD");
}
Run Code Online (Sandbox Code Playgroud)

static关键字意味着,该方法是静态的,并且可用于类型作为一个整体,不依赖于特定的实例.这就是为什么当它被标记为静态时你可以使用类名称(并且必须以这种方式调用它)来调用它.