我正在尝试将我的课程组织到文件夹中,如下图所示:
问题是当我运行主程序时,我什么也得不到,我正在访问数据成员但是无法获取它们的值。
有三个文件夹:Asset
,Transit
和Members
。
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();
}
}
}
答案 0 :(得分:1)
我认为您需要学习使用调试器,以便您可以自己确定何时发生!如果你想编程,这是一项非常重要的学习技巧。
无论如何,在你的情况下:你的主程序只执行两个步骤:
new DataMembers()
。这会调用默认构造函数(您没有),这意味着您的所有字段都将具有其默认值。对于字符串,它是null
。
打印dataMember.MemberA
。正如我在这一点所说的那样,值为null
且null
在您的控制台上不打印任何内容。
这就是预期的行为。我想你错过了某个地方的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();
}