基本上我的一个实例(theNode)需要接受变量,因为它在take参数中,但是,我需要全局声明实例(不确定这是否是正确的措辞)以及其他实例,因此数据是总是存储在程序执行的整个生命周期中。
我希望将它放在旁边的示例:
Tree theTree = new Tree();
UsersInput theInput = new UsersInput();
放置位置:
while (!attempt)
{
int temp = theInput.TheUsersInput();
Node theNode = new Node(temp);
theTree.Add(temp);
theNode.PrintNodes();
attempt = theInput.AddMoreNumbers();
}
任何人都有任何建议如何在不使用糟糕的编程习惯的情况下解决这个问题?
答案 0 :(得分:1)
您可以在其中一个类中创建static
个字段。像这样:
class Program
{
public static Node theNode;
void Main()
{
...
while (!attempt)
{
int temp = theInput.TheUsersInput();
theNode = new Node(temp);
theTree.Add(temp);
theNode.PrintNodes();
attempt = theInput.AddMoreNumbers();
}
// you can start using theNode globally from this point
}
}
答案 1 :(得分:0)
某个方法(或访问者等)不是“本地”的变量,而是直接驻留在class
(或struct
)声明中的变量,称为字段强>在C#。
字段可以是static
(对于类只存在一个字段)或非静态(类的每个实例,即该类型的每个对象都有拥有该领域的“版本”。
请注意,在C#中,必须在class
或struct
内声明变量。
示例:
namespace N
{
public static Tree TheTree = new Tree(); // ILLEGAL (not inside a class)!
}
namespace N
{
class YourClass
{
public static Tree TheOneTree = new Tree(); // OK, static
public Tree TheOtherTree = new Tree(); // OK, instance
void Method()
{
var theUltimateTree = new Tree(); // OK, local variable
...
}
}
}
但是,如果您需要使用属性而不是字段,则应考虑如上所述public
。字段通常应为private
(类成员的默认可访问性)。