纽比在这里。
我想将数组分配给数组(或锯齿状数组)。
我正在做以下事情:
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)
只是不确定究竟是怎么回事......
答案 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