vb.net将数组分配给锯齿状数组

时间:2015-09-12 06:34:05

标签: arrays vb.net

纽比在这里。

我想将数组分配给数组(或锯齿状数组)。

我正在做以下事情:

    Dim arrOutputData As Double() = New Double(0) {}
    Dim arrOutputArray As Double()() = New Double(9)() {}

    For intStepping As Integer = 0 To 9
        arrOutputData(0) = intStepping
        arrOutputArray(intStepping) = arrOutputData
    Next intStepping

我想要的是第一次迭代时arrOutputArray(0)(0)= 0,然后第二次迭代时arrOutputArray(1)(0)= 1,arrayOutputArray(2)(0)= 2等等。

实际发生的是第一次迭代时arrOutputArray(0)(0)= 0,但是第二次迭代时arrOutputData(0)的分配为1,arrOutputArray(0)(0)现在等于1甚至没有到达arrOutputArray(1)= arrOutputData的行。

在vb.net 2008和2015上(在不同的计算机上)尝试了这一点,我得到了相同的结果。

我做错了什么???

令我感到困惑的是,当代码到达并执行arrOutputData(0)= 1时,立即arrOutputArray(0)(0)= 1。当代码到达并执行下一行arrOutputArray(1)= arrOutputData时,arrOutputArray(0)(0)和arrOutputArray(1)(0)现在都等于1.

尝试更改声明语法,以便Redim Preserve工作,但仍然是相同的行为......

是什么给出了?

谢谢!

编辑: 我尝试了新代码:

    Dim arrInputData As Double() = New Double(intGlobalHistory) {}
    Dim arrOutputData As Double() = New Double(0) {}

    Dim arrInputArray As Double()() = New Double(intGlobalStepping)() {}
    Dim arrOutputArray As Double()() = New Double(intGlobalStepping)() {}

    For intStepping As Integer = 0 To intGlobalStepping
        For intHistory As Integer = (intGlobalHistory + 1) To 1 Step -1
            arrInputData(intHistory - 1) = dblSomeInputFactor + CDbl(intHistory)
        Next intHistory

        arrOutputData = New Double() {dblSomeOutputFactor + CDbl(intStepping)}

        arrInputArray(intStepping) = arrInputData
        arrOutputArray(intStepping) = arrOutputData
    Next intStepping

虽然现在arrOutputData和arrOutputArray变量工作得很好,但arrInputData和arrInputArray并不是这样,它的行为就像问题的第一部分所描述的那样。有什么想法吗?

我觉得我必须在这里改变一些东西以某种方式包含New关键字:

   arrInputData(intHistory - 1) = dblSomeInputFactor + CDbl(intHistory)

只是不确定究竟是怎么回事......

1 个答案:

答案 0 :(得分:1)

您需要更改此

public function __construct()
    {
            parent::__construct();
            $this->load->helper('url');
            $this->load->helper('file');
    }    
    public function index()
    {           
      $data = "Some file data";                     
        if (!write_file('M:\xampp\htdocs\tt\text.txt', $data))
        {
                echo 'Unable to write the file';
        }
        else
        {
                echo 'File written!';                           
        }
    }

到这个

    arrOutputData(0) = intStepping
像这样压缩

或更多(跳过“arrOutputData”变量)

    arrOutputData = New Double() {intStepping}

除了循环之外,还可以在创建时分配值,如此

    arrOutputArray(intStepping) = New Double() {intStepping}

这将给你arrOutputArray中的三个项目,每个项目持有三个 项目数组

您还可以将值数组分配给arrOutputArray的特定索引,如下所示

    Dim arrOutputArray As Double()() = New Double()() {New Double() {1, 2, 3}, New Double() {4, 5, 6}, New Double() {7, 8, 9}}

确保索引存在或发生异常。

点击此链接:The difference between value types and reference types