我想知道我怎样才能完成这个循环? 这有根 两个孩子的私人和非私人 和他们的孩子 私法:0,1,2,...,1023 和Nonpriv的孩子: 1024,...,65535
|Any______________PORT|
| |
|Priv| |Non-Priv|
|||||...|||| ||||....|||||
0123,.....1023 1024,...65535
我的意思是0在一个不同的节点中 1位于不同的节点中 2是在一个不同的节点中 这些端口有父PRIV 我区分他们的原因是,也许某一天0会有孩子的清单 它们可以在一个列表中,我们可以有一个节点列表,或者它们可以在一个字符串列表中,但我无法决定下一步有关字符串列表的操作 并且Node列表的问题在for循环中,我无法构建节点
现在我无法配置for循环如何更正我的代码?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace IDS
{
class Program
{
static void Main(string[] args)
{
Node root = new Node("Any_PORT");
List<Node> portcat = new List<Node>();
Node Priv = new Node("Priv");
Node NonPriv=new Node("Non-Priv");
root.setchildren(portcat);
root.Thisisroot();
root.setNodeinlist(Priv);
root.setNodeinlist(NonPriv);
Priv.setparent(root);
NonPriv.setparent(root);
List<Node> portsP = new List<Node>();
Priv.setchildren(portsP);
for (int i = 0; i < 1024; i++)
{
}
//I tried this one but I can't fix between Nodes and list of a string
List<string> portsN = new List<string>();
for (int i = 1024; i < 65535; i++)
{
portsN.Add(i.ToString());
}
}
public class Node
{
public string Data;
public List<Node> Children = new List<Node>();
public Node parent;
public Node(string r)
{
this.Data = r;
}
public Node Thisisroot()
{
this.parent = null;
return this;
}
public void setchildren(List<Node> list)
{
this.Children = list;
}
public List<Node> getchildren()
{
return this.Children;
}
public void setparent(Node p)
{
this.parent = p;
}
public Node getparent()
{
return this.parent;
}
public void setNodeinlist(Node n)
{
this.Children.Add(n);
}
}
}
}
答案 0 :(得分:3)
您应该使用一个集合来保存您的对象,例如列表:
List<Node> nodes = new List<Node>();
for (int i = 0; i < 1024; i++)
{
nodes.Add(new Node(i.ToString()));
}
答案 1 :(得分:1)
您需要List<Node>
而不是List<string>
。
LINQ求助:
IList<Node> nodes = Enumerable.Range(1024, 65535)
.Select(i => new Node(i.ToString))
.ToList();
答案 2 :(得分:1)
如果指定变量名称,它将保留最后一次迭代的值,并且在循环外部不可见。您需要有一个Node类型对象列表,然后在该列表中,您可以在循环
中添加类型node的实例List<Node> nodeList = new List<Node>()
for (int i = 0; i < 1024; i++)
{
nodeList.Add(new Node(i.ToString()));
}
答案 3 :(得分:0)
也许你的意思是像这样手动建立一个列表:
Node first;
Node lastCreated = null;
for (int i = 0; i < 1024; i++)
{
Node n = new Node(i.ToString());
if(i == 0)
first = n;
n.parent = lastCreated;
lastCreated = n;
}
仍然需要在每个项目中添加另一个引用,如下所示:
class Node{
public string Data;
public Node parent;
public Node child;
public Node(string r)
{
this.Data = r;
}
}
然后
Node first;
Node lastCreated = null;
for (int i = 0; i < 1024; i++)
{
Node n = new Node(i.ToString());
if(i == 0)
first = n;
n.Parent = lastCreated;
if(lastCreated != null)
lastCreated.child = n;
lastCreated = n;
}