我想从另一个类调用非静态变量。如果我将其设为静态,则会影响我的其他代码。
我有两个类Harvest_Client和Harvest_Project。
在我的Harvest_Project课程中,我
public int _client_id{ get; set;}
我只想在Harvest_Client类中做,
public int _id = Harvest_Project._client_id;
我该怎么做?
答案 0 :(得分:4)
首先,您应该重命名属性(它不是变量)以符合.NET命名约定,例如
public int ClientId { get; set; }
接下来,您需要HarvestProject
的实例(重命名后)。不要只是创建一个新的 - 你需要正确的实例,你感兴趣的客户ID的实例。我们不能告诉你它是哪一个 - 但如果你不知道已经有HarvestProject
的实例,你应该弄清楚你希望如何指定你想要的客户ID。
这样想:如果我问你“一个人多大了?”你自然想知道我在谈论哪个的人。这里完全一样。
答案 1 :(得分:1)
可能会将对该类的引用传递给您所需的内容:
public class Harvest_Project
{
public string Name { get; set; }
public int clientId { get; set; }
}
public class Harvest_Client
{
private Harvest_Project MyInstance;
private int myid;
public int MyId
{
get
{
return myid;
}
private set
{
MyId = value;
}
}
public Harvest_Client(Harvest_Project cls)
{
MyInstance = cls;
MyId = cls.clientId;//since class reference present no
//need for the property.
//its just here to show if in your
//project you really just need ID
//in this example its redundant
}
}
根据您的尝试,您可以创建一个Harvest_Project对象列表或更好的字典,如果有各种类型的“项目”,则可以将它们全部放在根据指定密钥编目的字典中。
答案 2 :(得分:0)
我想建议考虑下面的属性声明public int ClientId {get; private set;"}
它允许您禁止从第三方代码设置此变量,如果您确实需要它。否则你将拥有普通的全局变量