使用带有属性的静态方法

Con*_*nst 2 c# methods static properties

我几天前发现了一些属性(不确定我是否理解如何使用它们).所以我决定做一些测试.所以这就是我所做的:我创建了一个包含一些属性的类,例如:

public string _string1 { get; set; }
public string _string2 { get; set; } 
Run Code Online (Sandbox Code Playgroud)

然后我在同一个类中创建了一个方法,让我们这样说:

public static string  Example()
{
   switch(_string1.length > _string2.length)
   {
      case true :
             return _string1;
             break;
      default : return _string2;
   }
}
Run Code Online (Sandbox Code Playgroud)

只是一个愚蠢的例子来理解一点然后我从主类调用了方法之后我得到了一些错误:非静态字段,方法或属性'xxx.properties._string1需要对象引用.得到'

那肯定是一个愚蠢的错误,但我是c#的新手,我可以使用一些帮助.

Ian*_*Ian 10

您还需要使属性保持静态:

public static string _string1 { get; set; }
public static string _string2 { get; set; } 
Run Code Online (Sandbox Code Playgroud)

基本上静态方法没有状态.以非静态方式声明的那些字段基本上类似于状态,因此它无法访问它们.通过将它们标记为静态,您可以说这是AppDomain的全局值.

但是要注意使用这样的静态字段要注意的一件事是,如果你开始使用任何类型的线程并尝试存储状态,那么你最终可能会遇到令人讨厌的问题进行调试,因为你不知道你共享资源的状态是什么在.

防止这种情况(如果您不需要状态)的方法是将这些定义为常量字段.然后你不能修改它们,但意味着你不必担心有人在你没想到的时候改变它们.

public const string _string1;
public const string _string2;
Run Code Online (Sandbox Code Playgroud)