为什么我的值没有保存在一个类型的实例之间

本文关键字:一个 类型 之间 实例 我的 存在 保存 为什么 | 更新日期: 2023-09-27 18:27:47

我有一个类:

public class pro {
    private string url = string.Empty;
    public string GetURL() { return url; }
    public void SetURL(string value) { url = value; }
}

在这一行中,我得到了价值:

string url = li1.Value;  
pro itm = new pro();  // I have create Proprtie so I'm calling that
itm.SetURL(url); // here I'm setting value

随后:

pro itm = new pro(); //properties object I have created
string url = itm.GetURL(); // I'm not getting value which I have set in first 

类。

我还创建了道具;我做错了什么?

为什么我的值没有保存在一个类型的实例之间

我可以理解你的问题吗:

问题是,在第二个中,您创建了一个pro类的新实例。如果要访问第一个类中设置的字符串值,则应该使用第一个pro对象。

如果不是你的问题,请澄清。

每个类实例(即每个new pro())都有不同的实例值;例如,如果您有两个不同的实例,那么它们将不会共享URL。如果您想共享这一点,您应该通过传递pro,使相同的pro实例对两个位置都可用。

顺便说一句,GetURL()/SetURL()不是惯用C#——更常见的是具有属性,即

public string Url {get;set;}

然后您将访问为:

YourType item = new YourType();
item.Url = "http://foo.com/bar/";
// ... 
string url = item.Url;

从评论中,听起来就像你在谈论static数据;我应该强调的是,使用static通常不是一个好主意,并且可能会导致测试、多租户、线程等方面的许多问题;但是:以下在没有任何实例的情况下工作

public class Properties {
    public static string Url {get;set;}
}
...
Properties.Url = "http://foo.com/bar/";
...
string url = Properties.Url;

注意:根本没有实例。

但是,最好始终保持实例可用,并对该通用实例使用实例属性。

如果需要类似类的应用程序属性,可以使用静态类。

public static class pro
{
  public static string Url {get; set;}
}

并像CCD_ 11一样使用它;