为什么我的值没有保存在一个类型的实例之间
本文关键字:一个 类型 之间 实例 我的 存在 保存 为什么 | 更新日期: 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一样使用它;