【问题标题】:How to pass a jagged array from one form to another form?如何将锯齿状数组从一种形式传递到另一种形式?
【发布时间】:2013-08-05 09:42:24
【问题描述】:

(C# 新手) 我正在 C# 中创建一个锯齿状数组形式,如下所示,然后将其传递给形式 2:

          // Answers jagged array that is declared in form 1
         private Question[][] _answers;                 

以下代码是我用来创建第二个表单并将数组传递给它的代码:

        //Code to pass all elements of array to new array in form 2 
        Question[][] DisplayAnswers = new Question[1][];

        //Code for new form2
        ResultsForm resultsForm = new ResultsForm();

        //Code for dialog results from form 2  
        DialogResult dialogResult = resultsForm.ShowDialog();

我是否正确传递了数组?

【问题讨论】:

  • 我看不到DisplayAnswersresultsForm_answers 之间有任何联系或交互。你?您如何认为您显示的代码将答案数组传递给resultsForm
  • 表单 resultsForm 将在用户点击结果选项时在 form1(主表单)中输入的锯齿状数组中显示答案。
  • @user2421417:这就是您希望它的工作方式。但是你能准确解释一下这四行代码(上图)是如何实现这个目标的(根据你的想法)吗?我不是要这惹恼你;但在制定答案之前了解您对该代码的理解会有所帮助。
  • Form1 锯齿状数组传递给 Form2 -- 私有 Question[][] _answers;。然后在 Form1 上将锯齿状数组传递给 Form2 中声明的数组, -- Question[][] DisplayAnswers = new Question[1][];在创建 ResultsForm 之前 -- ResultsForm resultsForm = new ResultsForm(); .最后,DialogResult dialogResult = resultsForm.ShowDialog();用于单击确定按钮关闭表单的结果。

标签: c# arrays forms jagged-arrays


【解决方案1】:

我认为你的意思是这样做

    //Code to pass all elements of array to new array in form 2 
    Question[][] DisplayAnswers = new Question[1][];

    //Code for new form2
    ResultsForm resultsForm = new ResultsForm(DisplayAnswers);

    //Code for dialog results from form 2  
    DialogResult dialogResult = resultsForm.ShowDialog();

请记住,您还需要初始化锯齿状数组的第二部分 - 否则它会在尝试访问它时引发空引用异常。

【讨论】:

  • 如果您的第二种形式将数组作为构造函数中的参数,那么您可以像上面那样做
  • 将数组从一种形式传递到另一种形式与将变量的值从一种形式传递到另一种形式相同吗?
  • 是的,我们传递的变量可以是任何类型或类,甚至是一些用户定义的类。你只需要把它扔回去
  • 是的,您可以传递任何变量。变量的类型可以是任何类,甚至是用户定义的。您只需要具有其他形式的自定义构造函数。如果您正在接收参数,那么您可以将对象转换为特定类型。
【解决方案2】:

您实际上有几个选项,您实际上可以在构造函数中传递数组,前提是您已将其添加到 resultsForm 上的构造函数中。另一种选择是创建数组public static,然后通过使用主窗体的名称对其进行限定,从 resultsForm 访问它。

【讨论】:

  • 为什么要用static?如果表单的两个实例同时打开,它只会产生问题,并且会导致糟糕的 OOP。 ResultForm 上的实例属性在这里就可以了。
  • 我并没有说这是一个完美的选择,只是一个选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-23
  • 1970-01-01
相关资源
最近更新 更多