在File1中,我创建了一个包含3个字符串的类。我用公共arraylist创建了另一个类。我希望这个arraylist是动态的,它包含的对象是带有3个字符串的类。 我可以访问文件中的类成员,但不能访问单独的文件。
文件1
public class SensorCollection
{
public string ipAddress;
public string portNumber;
public string physicalLocation;
public DetectorCollection(string ipAddr, string portNum, string loc)
{
this.ipAddress = ipAddr;
this.portNumber = portNum;
this.physicalLocation = loc;
}
}
public class SensorCollectionArray
{
public System.Collections.ArrayList SensorArrayList;
}
...
System.Collections.ArrayList DetectorArrayList = new System.Collections.ArrayList();
...
DetectorArrayList.Add(new DetectorCollection(ipAddress, portNum, str));
所以我可以填充类数组但不能在单独的文件中访问它。 文件2
AdvancedSettingsForm.SensorCollectionArray mainDetectorCollectionArray;
System.Collections.ArrayList arrList;
答案 0 :(得分:2)
如果你像这样创建一个SensorCollectionArray:
SensorCollectionArray mySCA = new SensorCollectionArray();
然后您可以像这样访问它的ArrayList(例如,添加项目):
mySCA.SensorArrayList.Add(mySensorCollection);
但请注意,在您发布的代码中,您没有包含SensorCollectionArray的构造函数,因此SensorArrayList在实例化后将为null。因此,您可以将其设置为单独实例化的ArrayList,也可以在SensorCollectionArray类中创建ArrayList。
最后注意事项:如果要创建强类型集合,可能需要查看通用List(of T)类
答案 1 :(得分:0)
不完全确定尝试做什么,但我认为它类似于下面的内容。据推测,您正在创建一个传感器集合,因为您希望在将其存储到集合之前应用某种规则。
“这是一个很好的传感器吗?它是?将它添加到集合中!”
否则,你可以使用
List<Sensor> mySensors;
并没有真正使用一个基本上做同样事情的类。除此之外,就像它已经提到的那样,没有理由使用ArrayList。正如Marc在此指出的那样,使用ArrayList的最令人信服的理由是you're using .NET 1.1;否则,你应该使用通用的List集合以及它为你做的所有伟大的事情。
//Sensor.cs
public class Sensor
{
public string Ip{ get; set; }
public string Port{ get; set; }
public string PhysicalLocation{ get; set }
public Sensor(string ipAddr, string portNum, string loc)
{
Ip= ipAddr;
Port= portNum;
PhysicalLocation= loc;
}
}
//SensorCollection.cs
public class SensorCollection
{
private List<Sensor> sensors;
public Sensor this[int i]
{
get { return this.sensors[i]; }
set { this.sensors[i] = value; }
}
public IEnumerable<Sensor> Sensors
{
get{ return this.sensors; }
}
public SensorCollection()
{
sensors = new List<Sensor>();
}
public SensorCollection(string ip, string port, string location) : this()
{
this.sensors.Add(new Sensor(ip, port, location));
}
public SensorCollection(Sensor sensor) : this()
{
this.sensors.Add(sensor);
}
public void AddSensor(Sensor sensor)
{
//Determine whether or not to add it
this.sensors.Add(sensor);
}
public void RemoveSensor(Sensor sensor)
{
if (sensors.Contains(sensor))
sensors.Remove(sensor);
}
}
修改强>
如何在动态创建的每个传感器中访问ipaddress 课程列表?
var mySensors = new SensorCollection();
mySensors.AddSensor(new Sensor("1.1.1.1", "123", "Home"));
mySensors.AddSensor(new Sensor("9.9.9.9", "123", "Work"));
foreach(Sensor s in mySensors.Sensors)
Console.WriteLine(s.Ip);
我似乎无法访问另一个文件中的类成员
确保它们位于相同的命名空间中,或者包含一个“using”语句,其中包含您创建的类的命名空间。