Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-创建实例_C#_Instance - Fatal编程技术网

C#-创建实例

C#-创建实例,c#,instance,C#,Instance,我的问题很简单,但我不知道如何解决它 如果我已经确定创建了多少无人机,我的代码就可以工作 INICIO public partial class Inicio : Form { private Drone d1,d2; private Arena arena; public Inicio() { InitializeComponent(); } private void btnconetar_Click

我的问题很简单,但我不知道如何解决它

如果我已经确定创建了多少无人机,我的代码就可以工作

INICIO

  public partial class Inicio : Form
{

    private Drone d1,d2;
    private Arena arena;


    public Inicio()
    {
        InitializeComponent();         
    }

    private void btnconetar_Click(object sender, EventArgs e)
    {
        d1 = new Drone("192.168.1.10");
        d2 = new Drone("192.168.1.20");
        arena = new Arena(d1,d2);

        arena.Show();

        this.Hide(); 
    }


}
竞技场:

 public partial class Arena : Form
{
    private Drone d1, d2;

    public Arena(Drone d1,Drone d2)
    {
        InitializeComponent();
        this.d1 = d1;
        this.d2 = d2;


    }

    private void cb_drone_SelectedIndexChanged(object sender, EventArgs e)
    {
        if(cb_drone.SelectedIndex.ToString() == d1.ip_drone)
        {
            //do something
        }
    }
}
我的问题是:如何为n架无人机做到这一点?每次我点击一个按钮,它就会添加一个新的无人机(d3、d4、d5等),在竞技场上,我需要检查哪个组合框选择的项目是该无人机的ip

 private Drone d1, d2;

    public Arena(Drone d1,Drone d2)
    {
        InitializeComponent();
        this.d1 = d1;
        this.d2 = d2;


    }
在代码的这一部分:例如,如果有10个无人机创建的公共竞技场实例(无人机d1、无人机d2、无人机d3等),我如何简化这一点

编辑:

     List<Drone> lista_drones = new List<Drone>;
    private Arena arena;


    public Inicio()
    {
        InitializeComponent();         
    }

    private void Inicio_Load(object sender, EventArgs e)
    {

    }

    private void btnconetar_Click(object sender, EventArgs e)
    {
        lista_drones.Add(new Drone("192.168.1.10"));
        lista_drones.Add(new Drone("192.168.1.20"));
        arena = new Arena(lista_drones);

        arena.Show();

        this.Hide(); 
    }


 public partial class Arena : Form
{

    public Arena(List<Drone> lista_drones)
    {
        InitializeComponent();



    }

    private void cb_drone_SelectedIndexChanged(object sender, EventArgs e)
    {
        if(cb_drone.SelectedIndex.ToString() == )
        {
            //do something
        }
    }
}
List lista\u无人机=新列表;
私人竞技场;;
公共事务局()
{
初始化组件();
}
私有无效Inicio_加载(对象发送方、事件参数e)
{
}
私有void btnconterar\u单击(对象发送方,事件参数e)
{
添加(新无人机(“192.168.1.10”);
添加(新无人机(“192.168.1.20”);
竞技场=新竞技场(lista_无人机);
arena.Show();
this.Hide();
}
公共部分类竞技场:表格
{
公共竞技场(列出lista_无人机)
{
初始化组件();
}
私有无效cb_无人机_SelectedIndexChanged(对象发送方,事件参数e)
{
如果(cb_drone.SelectedIndex.ToString()=)
{
//做点什么
}
}
}

如果无人机数量未知,则希望使用集合类型而不是不同的字段:

public partial class Inicio : Form
{
    private List<Drone> drones;
    private Arena arena;
    ...

public partial class Arena : Form
{
    private List<Drone> drones;

    public Arena(IEnumerable<Drone> drones)
    {
        InitializeComponent();
        drones = new List<Drone>(drones);
    }
    ...
公共部分类Inicio:表单
{
私人名单无人机;
私人竞技场;;
...
公共部分类竞技场:表格
{
私人名单无人机;
公共竞技场(IEnumerable无人机)
{
初始化组件();
无人机=新列表(无人机);
}
...

如果无人机数量未知,则希望使用集合类型而不是不同的字段:

public partial class Inicio : Form
{
    private List<Drone> drones;
    private Arena arena;
    ...

public partial class Arena : Form
{
    private List<Drone> drones;

    public Arena(IEnumerable<Drone> drones)
    {
        InitializeComponent();
        drones = new List<Drone>(drones);
    }
    ...
公共部分类Inicio:表单
{
私人名单无人机;
私人竞技场;;
...
公共部分类竞技场:表格
{
私人名单无人机;
公共竞技场(IEnumerable无人机)
{
初始化组件();
无人机=新列表(无人机);
}
...

请在构造函数中使用'params'关键字:


public partial class Arena : Form
{
    private readonly Drone[] d;

    public Arena(params Drone[] d)
    {
        InitializeComponent();
        this.d = d;
    }

    private void cb_drone_SelectedIndexChanged(object sender, EventArgs e)
    {
        foreach (var di in this.d)
        {
            if(cb_drone.SelectedIndex.ToString() == di.ip_drone)
            {
            //do something
            }
        }
    }
}
这样你就可以这样使用它(当你已经知道它们的数量时)

或者如果你不知道他们中有多少人


public partial class Inicio : Form
{

    private List d;
    private Arena arena;


    public Inicio()
    {
        InitializeComponent();         
    }

    private void btnconetar_Click(object sender, EventArgs e)
    {
        d = new List(){ new Drone("192.168.1.10"), /* whatever */ };
        arena = new Arena(d.ToArray());

        arena.Show();

        this.Hide(); 
    }
}

请在构造函数中使用“params”关键字:


public partial class Arena : Form
{
    private readonly Drone[] d;

    public Arena(params Drone[] d)
    {
        InitializeComponent();
        this.d = d;
    }

    private void cb_drone_SelectedIndexChanged(object sender, EventArgs e)
    {
        foreach (var di in this.d)
        {
            if(cb_drone.SelectedIndex.ToString() == di.ip_drone)
            {
            //do something
            }
        }
    }
}
这样你就可以这样使用它(当你已经知道它们的数量时)

或者如果你不知道他们中有多少人


public partial class Inicio : Form
{

    private List d;
    private Arena arena;


    public Inicio()
    {
        InitializeComponent();         
    }

    private void btnconetar_Click(object sender, EventArgs e)
    {
        d = new List(){ new Drone("192.168.1.10"), /* whatever */ };
        arena = new Arena(d.ToArray());

        arena.Show();

        this.Hide(); 
    }
}

你需要有一个无人机列表,所以使用
列表
。然后将该列表传递给你的
竞技场

public partial class Inicio : Form {

   private List<Drone> drones;
   private Arena arena;


   public Inicio() {
      InitializeComponent();
      this.drones = new List<Drone>();
   }

   private void btnconetar_Click(object sender, EventArgs e) {
      d1 = new Drone( "192.168.1.10" );
      d2 = new Drone( "192.168.1.20" );
      drones.Add( d1 );
      drones.Add( d2 );
      // more drones

      arena = new Arena( drones );

      arena.Show();

      this.Hide();
   }
}

你需要有一个无人机列表,所以使用
列表
。然后将该列表传递给你的
竞技场

public partial class Inicio : Form {

   private List<Drone> drones;
   private Arena arena;


   public Inicio() {
      InitializeComponent();
      this.drones = new List<Drone>();
   }

   private void btnconetar_Click(object sender, EventArgs e) {
      d1 = new Drone( "192.168.1.10" );
      d2 = new Drone( "192.168.1.20" );
      drones.Add( d1 );
      drones.Add( d2 );
      // more drones

      arena = new Arena( drones );

      arena.Show();

      this.Hide();
   }
}

使用
List
而不是不同的
dN
字段。@DStanley你可能想把它写进一个可能有用的答案中。你能解释得更好一点吗?我把它们都放在一个列表中,然后在公共竞技场上使用(列表无人机)使用
List
而不是不同的
dN
字段。@DStanley你可能想把它写进一个可能有用的答案中。你能解释得更好一点吗?我把它们都放在一个列表中,然后在公共竞技场上使用(列表无人机)thx。请检查我的编辑。我如何检查无人机的IP是否在组合框上?在列表中搜索无人机时尝试使用linq,例如列表。其中(x=>x.IP\u-drone==combobox.selected)thx。请检查我的编辑。我如何检查无人机的IP是否在组合框上?在列表中搜索无人机时尝试使用linq,例如列表。在哪里(x=>x.ip_-drone==combobox.selected)我很高兴能帮上忙。我很高兴能帮上忙。