C# 对于此方法,是否需要对象引用

C# 对于此方法,是否需要对象引用,c#,C#,我是C#的新手。我想知道为什么我会因此而出错: 错误:此方法需要对象引用(翻译自德语消息)。任何想法。对我来说似乎是正确的 namespace DNS { public class Core { Dig dig; public Core() { dig = new Dig(); } public static void startTest() {

我是C#的新手。我想知道为什么我会因此而出错:

错误:此方法需要对象引用(翻译自德语消息)。任何想法。对我来说似乎是正确的

namespace DNS
{

    public class Core
    {

        Dig dig;

        public Core()
        {
            dig = new Dig();
        }


        public static void startTest()
        {
            dig.myServer = "10.10.10.10"; <------ ERROR
名称空间DNS
{
公共类核心
{
挖掘;
公共核心()
{
挖掘=新挖掘();
}
公共静态无效开始测试()
{

dig.myServer=“10.10.10.10”您试图以静态方法访问实例
dig
字段,这是不可能的,因为您需要对象的实例才能访问实例成员

一种可能性是使
dig
字段保持静态:

public class Core
{
    private static Dig dig = new Dig();

    public static void startTest()
    {
        dig.resolver.DnsServer = "10.10.10.10";
        ...
    }
}
另一种可能性是使
开始测试
方法和实例方法:

public class Core
{
    private Dig dig;

    public Core()
    {
        dig = new Dig();
    }

    public void startTest()
    {
        dig.resolver.DnsServer = "10.10.10.10";
        ...
    }
}
或者另一种可能性是在静态方法中创建
核心
对象的实例:

public class Core
{
    private Dig dig;

    public Core()
    {
        dig = new Dig();
    }

    public static void startTest()
    {
        Core core = new Core();
        core.dig.resolver.DnsServer = "10.10.10.10";
        ...
    }
}

它将取决于您的实际设计要求。

声明并初始化静态方法的内部挖掘。

您还可以使整个类成为静态的。然后错误也会消失:

名称空间地址 {

公共静态类核心
{ 
挖掘;
公共静态核心()
{ 
挖掘=新挖掘();
} 
公共静态无效开始测试()
{ 

dig.resolver.DnsServer=“10.10.10.10”;//在第一个代码片段中,
startTest
应该仍然是
静态的,对吗?您可能还想从
this
以外的实例中使用实例字段进行说明,现在您的第一句话不正确。@BenVoigt,是的,它应该是静态的。
public static class Core 
{ 

    Dig dig; 

    public static Core() 
    { 
        dig = new Dig(); 
    } 


    public static void startTest() 
    { 
        dig.resolver.DnsServer = "10.10.10.10";// <------ ERROR 
    }