类组织:如何在组织文件夹中的类时调用其他类中的实例成员

时间:2014-07-22 17:58:54

标签: c#

我正在尝试将我的课程组织到文件夹中,如下图所示:

问题是当我运行主程序时,我什么也得不到,我正在访问数据成员但是无法获取它们的值。

有三个文件夹:AssetTransitMembers

Asset是根文件夹。成员包含我需要在整个程序中访问的所有变量,Transit包含其他方法或数据库类。

代码:

namespace ClassObjects.Asset.Members
{
    class DataMembers
    {
        private string instanceMemberA;
        private string instanceMemberB;

        public void SetValues(string inputA, string inputB)
        {
            this.instanceMemberA = inputA;
            this.instanceMemberB = inputB;
        }

        public string MemberA
        {
            get
            {
                return this.instanceMemberA;
            }
        }

        public string MemberB
        {
            get
            {
                return this.instanceMemberB;
            }
        }

    }
}

过境班:

namespace ClassObjects.Asset.Transit
{
    class Transit
    {   
       //Example here
        public void DoNothing()
        {
         Asset.Members.DataMembers dataMember = new Asset.Members.DataMembers();

        //Pass values to datamember
            dataMember.SetValues("ValueA", "ValueB");
        }

    }
}

主要方法:

namespace ClassObjects
{
    class Program
    {
      static void Main(string[] args)
       {
       Asset.Members.DataMembers dataMember = new Asset.Members.DataMembers();

    //Unable to print the values sent to the data members from the Transit class.

    Console.WriteLine(dataMember.MemberA);

     Console.ReadKey();
        }
    }
}

2 个答案:

答案 0 :(得分:1)

我认为您需要学习使用调试器,以便您可以自己确定何时发生!如果你想编程,这是一项非常重要的学习技巧。

无论如何,在你的情况下:你的主程序只执行两个步骤:

  1. new DataMembers()。这会调用默认构造函数(您没有),这意味着您的所有字段都将具有其默认值。对于字符串,它是null

  2. 打印dataMember.MemberA。正如我在这一点所说的那样,值为nullnull在您的控制台上不打印任何内容。

  3. 这就是预期的行为。我想你错过了某个地方的SetValues()电话。顺便说一句,你的Transit课程从未被使用过。

答案 1 :(得分:1)

您的程序按预期运行。您的意思是让Transit返回一组数据吗?

public Asset.Members.DataMembers DoNothing()
{
    var dataMember = new Asset.Members.DataMembers();

    // Pass values to datamember
    dataMember.SetValues("ValueA", "ValueB");

    // Return values to the caller
    return dataMember;
}

然后,在您的程序中,存储该方法的结果并将其打印出来。

  static void Main(string[] args)
   {
        Asset.Members.DataMembers dataMember;

        dataMember = new Transit().DoNothing();

        Console.WriteLine(dataMember.MemberA);

        Console.ReadKey();
    }