2012-03-16 49 views
-1

我有类:后来如何使用属性使用字符串值,从一类到另一个类

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 

然后:

public class pro { 

     private string url = string.Empty; 

     public string GetURL() { return url; }    

     public void SetURL(string value) { url = 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. 

我也曾经创建的属性;我究竟做错了什么?

告诉我怎么一流的我的字符串值到达第二级使用性能。告诉我,我正在尝试的代码,但无法做到这一点。

+7

“我究竟做错了” - 命名类“亲”和变量“ITM”为你希望其他人阅读代码是definitly之一这些事。 – 2012-03-16 05:28:30

+0

当你说“then later”时,你的意思是代码是以不同的方法运行还是运行在不同的页面上? – patmortech 2012-03-16 05:40:36

+1

你已经在这里问完全相同的问题,并没有接受答案http://stackoverflow.com/questions/9715520/why-are-my-values-not-being-kept-between-instances-of-a -type – Divi 2012-03-16 06:23:36

回答

2

如果代码与您描述的一样,那么您必须使用与执行SetURL相同的itm。它看起来像你实例化一个新的pro,该不会是你已经运行在SetURL同一个,所以这将是空的(也就是这里的默认值)。

然而,你应该只使用.NET属性来代替的GetURL和SetURL。

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

您还可以,然后使用对象初始化(这是只开放给你,如果你使用的是.NET的更新的版本之一,虽然)

pro itm = new pro{Url=li1.Value}; 

最后,以访问该值:现在

itm.Url; 

,你可以使类及其方法静态的,让每一个调用它的对象将看到相同的最后一个值,也。 IF,那是你真正需要的

+0

但是pro itm = new pro();意味着“itm”被再次声明,这意味着它会抛出一个编译错误。所以,如果代码正在运行,他只使用2个不同的对象。 – Divi 2012-03-16 05:33:53

+0

是的,这是一个明显的可能性。我只是尽可能地给出问题的状态......以防某种方式错误输入 – 2012-03-16 05:36:34

+0

对不起,我在编辑之前阅读了您的答案。太慢:) – Divi 2012-03-16 05:37:31

0

你的意思设置网址提交到静态的?

public class pro 
{ 
    static private string url = string.Empty; 

    public string GetURL() { return url; } 

    public void SetURL(string value) { url = value; } 
} 
+0

不,我只是想从一个类调用一个字符串vriable值到另一个类使用asp.net中的proprties – 2012-03-16 05:38:05

+0

尝试使用会话吗? – Whitesmell 2012-03-16 05:41:20

1

通过它的外观,你应该传递对象而不是重新创建对象。您正在使用2级不同的对象

说实话,它并不需要是一个类,其所有做的是设置和获取一个字符串属性,你为什么不只是让一个字符串属性的类正在使用它?

像这样:

private string ProUrl {get;set;} 
1

要创建的亲新实例,然后无需设置 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 

print itm.GetURL() now。应该能够看到设置的值。

或者,如果你的要求是保留变量的单拷贝整个然后用static variables

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); 
相关问题