-1

我想从另一个类中调用非静态变量。如果我将其设为静态,则会影响我的其他代码。

我有两个类 Harvest_Client 和 Harvest_Project。

在我的 Harvest_Project 课程中,我

public int _client_id{ get; set;}

我只想在 Harvest_Client 类中做的是,

public int _id = Harvest_Project._client_id;

我该怎么做?

4

3 回答 3

4

首先,您应该重命名属性(它不是变量)以符合 .NET 命名约定,例如

public int ClientId { get; set; }

接下来,您需要一个(后重命名)实例HarvestProject不要只创建一个新实例——你需要正确HarvestProject的实例,即你感兴趣的客户端 ID。我们无法告诉你它是哪一个——但如果你手头还没有实例,您应该弄清楚您希望如何指定您想要的客户端 ID。

这样想:如果我问你“一个人多大了?” 你自然会想知道我说的是哪个人。这里完全一样。

于 2013-07-04T12:15:47.973 回答
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 对象列表或更好的字典,如果有各种类型的“项目”,它们都可以放在根据指定键编目的字典中。

于 2013-07-04T12:32:35.610 回答
0

有一刻我想建议考虑以下属性声明public int ClientId {get; private set;"}如果您确实需要,它允许您禁止从第三方代码设置此变量。否则你会有普通的全局变量

于 2013-07-04T12:35:55.497 回答