我有课:
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 class.
我也创建了属性;我做错了什么?
告诉我如何使用Properties将我的第一类String值转换为第二类。告诉我我正在尝试但不能做到的代码。
答案 0 :(得分:2)
如果代码与您描述的相符,那么您必须使用与itm
相同的SetURL
。看起来你正在实例化一个新的pro
,它与你运行SetURL
的那个不同,所以它将是空的(这是默认值)。
但是,您应该只使用.NET属性而不是GetURL和SetURL。
public class pro
{
public string Url {get;set;}
}
您也可以使用对象初始值设定项(如果您使用的是最新版本的.NET,则仅对您开放)
pro itm = new pro{Url=li1.Value};
最后,要访问该值:
itm.Url;
现在,您可以使类及其方法保持静态,以便调用它的每个对象也会看到相同的最后一个值。如果,那就是你真正想要的东西
答案 1 :(得分:1)
从它的外观来看,你应该传递对象而不是重新创建对象。你正在使用2个不同的对象
说实话,它不需要是一个类,它所做的只是设置并获取一个字符串属性,为什么不在使用它的类中使它成为字符串属性?
像这样:
private string ProUrl {get;set;}
答案 2 :(得分:1)
第二次创建pro的新实例然后不设置值 pro.url第二个例子,你试图获得价值。所以它显然采用默认值。
string url = li1.Value;
pro itm = new pro(); // I have created a Proprty so I'm calling that
itm.SetURL(url); // here I'm setting value
现在打印itm.GetURL()
。应该能够看到正在设定的值。
或者,如果您要求保留变量的单个副本,请使用static variables
答案 3 :(得分:0)
你的意思是将归档网址设置为静态吗?
public class pro
{
static private string url = string.Empty;
public string GetURL() { return url; }
public void SetURL(string value) { url = value; }
}
答案 4 :(得分:0)
在C#3.0及更高版本中,当属性访问器中不需要其他逻辑时,自动实现的属性使属性声明更简洁。它们还使客户端代码能够创建对象。当您声明一个属性时,如下例所示,编译器会创建一个私有的匿名支持字段,只能通过属性的get和set访问器进行访问。
您只需要这样就可以获得以上功能:
public class Pro
{
// Auto-Impl Properties for trivial get and set
public String Url { get; set; }
}
//Here accessing the property of Url
Pro proUrl = new Pro();// // Intialize a new object.
proUrl.Url = "www.google.com";//Setting the value
Console.WriteLine("The url is {0}",proUrl.Url);