我有课:
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
类。
我也创造了属性;我做错了什么?
答案 0 :(得分:3)
每个类实例(即每个new pro()
)都有不同的实例值;例如,如果您有2个不同的实例,则完全可以预期它们不会共享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;
注意:根本没有实例。
但是,几乎总是优先保持实例可用,并对该公共实例使用实例属性。
答案 1 :(得分:3)
我可能理解你的问题:
问题是,在第二个中,您创建了pro
类的新实例。如果您想访问第一个类中设置的字符串值,则应使用该第一个pro
对象。
如果不是您的问题,请澄清。
答案 2 :(得分:0)
如果你需要一些像应用程序属性这样的类,你可以使用静态类。
public static class pro
{
public static string Url {get; set;}
}
并像pro.Url = "aa"
一样使用它;