在我当前的程序中,我正在构建一个对象数组然后填充它,但是我需要从同一个类中的另一个函数访问这个填充的数组。在C中我会通过使数组成为全局来实现这一点,但是C#中不存在全局变量,当我尝试使用“静态”参数时,它表示数组不能是静态的。
namespace FormsTest1
{
public partial class Form1 : Form
{
public int AppCount;
public static applications[] appList;
public Form1() //Main Entry point of program
{
IEnumerable<int> apps = VolumeMixer.EnumerateApplications();
AppCount = apps.Count();
int i = 0;
applications[] appList = new applications[AppCount];
foreach (int app in apps)
{
appList[i] = new applications();
appList[i].setProcessID(app);
appList[i].populate();
i++;
}
for (int j = 0; j < AppCount; j++) { ChannelSelect1.Items.Add(appList[j].Name); }
}
private void ChannelSelect1_SelectedIndexChanged(object sender, EventArgs e)
{
for (int k = 0; k < AppCount; k++)
{
if (ChannelSelect1.Text == appList[k].Name) //<-- This array is not the one I populate in Form1()
{ Channels[0] = appList[k].PID; }
}
}
public class applications
{
public int PID;
public string ProcessName;
public string WindowName;
public string Name;
public string Path;
public void setProcessID(int ID) { PID = ID; }
public string getProcessName() { return ProcessName; }
public string getWindowName() { return WindowName; }
public string getName() { return Name; }
public string getPath() { return Path; }
public void populate()
{
//stuff
}
}
}
我无法将数组传递给其他函数,因为它们是事件驱动的,我需要数组的索引能力。
如何在一个函数中声明和填充对象数组,然后在同一个类的另一个函数中使用该数组?
答案 0 :(得分:4)
从
更改构造函数applications[] appList = new applications[AppCount];
到
appList = new applications[AppCount];
您应该初始化您的实例字段,而不是创建新的本地字段。
顺便说一句:没有必要让数组保持静态。