gpt4 book ai didi

c# - 使用具有属性的静态方法

转载 作者:行者123 更新时间:2023-11-30 19:05:22 26 4
gpt4 key购买 nike

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

public string _string1 { get; set; }
public string _string2 { get; set; }

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

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

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

这当然是一个愚蠢的错误,但我是 c# 的新手,我需要一些帮助。

最佳答案

你也需要让你的属性静态化:

public static string _string1 { get; set; }
public static string _string2 { get; set; }

本质上,静态方法没有状态。以非静态方式声明的那些字段本质上就像一个状态,因此它无法访问它们。通过将它们标记为静态,您说这是 AppDomain 的全局值。

然而,使用这样的静态字段要小心的一件事是,如果您开始使用任何类型的线程并尝试存储状态,那么您最终可能会遇到令人讨厌的调试问题,因为您不知道自己处于什么状态共享资源在.

一种防止这种情况(如果您不需要状态)的方法是将它们定义为常量字段。这样您就无法修改它们,但这意味着您不必担心有人会在您意想不到的时候更改它们。

public const string _string1;
public const string _string2;

关于c# - 使用具有属性的静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22531950/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com