C# 我无法访问我在类中声明的变量

C# 我无法访问我在类中声明的变量,c#,C#,这是我的c代码 namespace abc { public class def: SchedulerClient { public string key; {} public static void send(string abc) { lots of code........... key = string; } } } 当我试图在我声明为公共

这是我的c代码

namespace abc {
    public class def: SchedulerClient 
    {
        public string key; {}
        public static void send(string abc) 
        {
            lots of code...........
            key = string;
        }
    }    
}
当我试图在我声明为公共的变量键中存储字符串值时,我遇到了一个错误

这是我得到的错误:

非静态字段、方法或对象需要对象引用 属性“abc.def.Dkey”


如何克服此问题?

您可以通过使您的方法不是静态的来克服此问题:

public void send(string abc) 
{
    lots of code...........
    key = stringValue;
}
或者通过使字段为静态:

public static string key;

无论如何,我认为您需要考虑您的设计,找出哪些是静态的,哪些不是静态的。

您可以通过使您的方法不是静态的来克服它:

public void send(string abc) 
{
    lots of code...........
    key = stringValue;
}
或者通过使字段为静态:

public static string key;

无论如何,我认为您需要考虑您的设计,找出哪些是静态的,哪些不是静态的。

您的方法是静态的,但您的键是一个实例。无法访问静态引用中的实例属性或方法


要么使它们都是静态的,要么使它们都是非静态的

您的方法是静态的,但您的键是实例。无法访问静态引用中的实例属性或方法


要么使它们都是静态的,要么使它们都是非静态的

静态成员只能在静态方法中访问,静态方法可以访问静态成员和非静态成员。请进行相应的更改。

静态成员只能在静态方法中访问,静态方法可以访问静态成员和非静态成员。请做出相应的更改。

这立即帮助了我:这立即帮助了我:我建议您阅读MSDN关于静态类和静态成员的文章。这是关于你在问题上的问题的基础。谢谢你,老兄,我建议你阅读MSDN关于静态类和静态成员的文章。这是关于你在问题上的问题的基础。谢谢,Buddy,Will do soStatic成员可以从非静态方法访问。您是正确的,但是无效的静态方法中的相反部分只能访问静态成员……除非您将类的实例作为参数传递,否则您可以使用该参数访问非静态私有成员,这是非静态方法自动发生的。@kevin Brock-我清楚您的注释。但不是下面的部分,静态方法只能访问静态成员…除非您将类的实例作为参数传入,否则您可以使用该参数访问非静态私有成员,这是非静态方法自动发生的。你能提供更多的信息来正确地得到这些东西吗?这只是一个技术问题。若类中有静态方法,则可以手动传入对该类的引用,而不是隐含的引用,并且仍然可以访问私有成员。例如:类MyClass{int member;公共静态addOneMyClass myObj{myObj.member++;}。没有人在实践中真正做到这一点;或者至少他们不应该这样做,因为这应该作为成员方法编写。静态成员可以从非静态方法访问。您是正确的,但是无效的静态方法中的相反部分只能访问静态成员……除非您将类的实例作为参数传递,否则您可以使用该参数访问非静态私有成员,这是非静态方法自动发生的。@kevin Brock-我清楚您的注释。但不是下面的部分,静态方法只能访问静态成员…除非您将类的实例作为参数传入,否则您可以使用该参数访问非静态私有成员,这是非静态方法自动发生的。你能提供更多的信息来正确地得到这些东西吗?这只是一个技术问题。若类中有静态方法,则可以手动传入对该类的引用,而不是隐含的引用,并且仍然可以访问私有成员。例如:类MyClass{int member;公共静态addOneMyClass myObj{myObj.member++;}。没有人在实践中真正做到这一点;或者至少他们不应该这样做,因为这应该作为成员方法编写。