我有一个名为" NameSpace":
的命名空间using System;
using System.Collections;
namespace NameSpace
{
public enum Number
{
One,
Two,
Three
}
public sealed class Test1
{
public string test(Number num)
{
switch (num)
{
case Number.One:
return "1";
case Number.Two:
return "2";
case Number.Three:
return "3";
}
return "?";
}
}
}
当我打电话给这一行时:
Console.WriteLine(NameSpace.Test1.test(NameSpace.Number.One));
我收到错误:
有人可以帮帮我吗?谢谢你变化多了!错误CS0120:访问非静态成员`NameSpace.Test1.test(NameSpace.Number)'
需要对象引用
答案 0 :(得分:7)
您有两种选择:
您可以将test
设为静态方法:
public static string test(Number num) { /*...*/ }
然后您不需要Test1
的实例,而是需要在类型上调用test
:
Test1.test(Number.One);
或者您需要创建Test1
类的实例:
Test1 instance = new Test1();
instance.test(Number.One);
由于test
方法不使用Test1
的任何实例成员,因此第一种方法就足够了。
答案 1 :(得分:3)
你可以做到
Console.WriteLine(new NameSpace.Test1().test(NameSpace.Number.One));
或使方法静态:
public static string test(Number num)
答案 2 :(得分:2)
你必须首先创建一个Test1类的对象,然后在其上调用测试方法
Console.WriteLine(new Test1().test(NameSpace.Number.One));
答案 3 :(得分:0)
这种情况正在发生,因为您没有将测试方法声明为静态。您必须将static
关键字添加到方法声明中,例如public static string test...
,或者创建Test1
类的新实例。
Test1 t = new Test1();
Console.WriteLine(t.test(Number.One));
您应该详细了解static和object-oriented programming。