C#中数组是引用类型的例子

数组是引用类型的例子

double[] num1 = new double[3];
double[] num2 = new double[3];
List<double[]> list1 = new List<double[]>();
List<double[]> list2 = new List<double[]>();
for (int i = 0; i < 100; i++)
{
    for (int j = 0; j < 3; j++)
    {
        num1[j] = i + j * 0.01;
        num2[j] = 0.1 * i + j * 0.01;
    }
    list1.Add(num1);
    list2.Add(num2);
}
JArray array1 = JArray.FromObject(list1);
JArray array2 = JArray.FromObject(list2);
JObject jobj = new JObject(new JProperty("Voltage", array1), new JProperty("Current", array2));
File.WriteAllText("data.json", jobj.ToString());

代码的结果:里边的元素的值和最后一个元素的值相等。
原因:数组是引用类型,当double数组在循环外被创建时,通过循环一直都是将一个数组的引用添加到List中去,所以值都相等。
解决:只需将数组创建到循环中就可以

List<double[]> list1 = new List<double[]>();
List<double[]> list2 = new List<double[]>();
for (int i = 0; i < 100; i++)
{
    double[] num1 = new double[3];
    double[] num2 = new double[3];
    for (int j = 0; j < 3; j++)
    {
        num1[j] = i + j * 0.01;
        num2[j] = 0.1 * i + j * 0.01;
    }
    list1.Add(num1);
    list2.Add(num2);
}
JArray array1 = JArray.FromObject(list1);
JArray array2 = JArray.FromObject(list2);
JObject jobj = new JObject(new JProperty("Voltage", array1), new JProperty("Current", array2));
File.WriteAllText("data.json", jobj.ToString());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值