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