如何使用Properties将字符串值从一个类用于另一个类

时间:2012-03-16 05:19:12

标签: c#

我有课:

   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值转换为第二类。告诉我我正在尝试但不能做到的代码。

5 个答案:

答案 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);