没有设置大小的数组声明的问题

时间:2015-08-19 05:49:37

标签: c# arrays

在Microsoft Visual Studio(当然是社区版)中,我有一个简单的C#程序,我声明一个没有设置大小的简单数组

int[] paths;

在程序的后续部分中,我尝试设置数组的部分但是它给了我一个错误

Use of unsigned local variable 'paths'

在该计划的这一部分

for (int b = 0; b < 100; b++) { 
      paths[b] = b;
}

总之,我想我想知道这个问题是否会影响我,还是语法问题。 (我起源于Java,这是责任我是如何遇到这个问题的一半)我愿意接受关于这是否可能的关闭,(如果是这样来源请)或者如果我做错了。(如果是这样,请在评论中提供解决方案/建议)

5 个答案:

答案 0 :(得分:3)

在C#中数组是固定大小的,需要初始化

var size = 100;
int[] paths = new int[size];
for (var b = 0; b < size; b++) { 
      paths[b] = b;
}
对于C#初学者来说,列表也是另一件好事,一个数组和一个列表之间的区别在于,List会自动为你自己调整大小(我相信Java中有一个非常相似的List类)< / p>
var size = 100;
var paths = new List<int>();
for (var b = 0; b < size; b++) { 
      paths.Add(b);
}

答案 1 :(得分:0)

首先,您要创建一个变量,但根本没有分配它,这就是您出错的原因。

其次在C#数组中需要一个固定的大小,并且无法调整大小,因此必须提供初始化大小,显式如下或隐式使用对象初始化(参见注释)。

int[] paths; // declaration
paths = new int[100] // assignment, array initialized with a size of 100
// with objects
// paths  = new int[] { 1, 2, 3 }; 

// declaration and assignment can also be merged into 1 line.
// i.e int[] paths = new int[100]

for (int b = 0; b < 100; b++) { 
      paths[b] = b;
}

答案 2 :(得分:0)

您刚刚声明了数组,但您还需要在使用它之前创建它:

paths = new int[100];

答案 3 :(得分:0)

您必须遵循数组声明语法。

int[] paths; // - &gt;在这里,您要声明路径数组,而不是创建数组。

在内存中它设置路径数组而没有它的大小。因此,您必须通过创建此数组来设置大小,如下所示。

int[] paths = new int[10];

您可以创建和声明数组,如下所示,以便为其分配另一个数组。 EG:

int[] arr1 = new int[] { 0,1,2,3,4,5,6,7};
int[] paths =arr1;

此处arr1大小和数据将自动分配给路径数组。

答案 4 :(得分:0)

你必须在代码中声明和初始化数组元素,如

$(function() {
    $( "#from, #to" ).datepicker({
        defaultDate: "+1w",
        changeMonth: true,
        numberOfMonths: 3,
        onSelect: function( selectedDate ) {
            if(this.id == 'from'){
              var dateMin = $('#from').datepicker("getDate");
              var rMin = new Date(dateMin.getFullYear(), dateMin.getMonth(),dateMin.getDate() + 1); 
              var rMax = new Date(dateMin.getFullYear(), dateMin.getMonth(),dateMin.getDate() + 61); 
              $('#from').datepicker("option","minDate",rMin);                  $('#to').datepicker("option","maxDate",rMax);                    
            }

        }
    });
});

如果在初始化之前不知道大小,则需要使用List

int[] myInt = new int[100]

并且必须使用数组并且在初始化之前不修复数组的大小您需要遵循以下代码但是下面的代码是内存使用的浪费和更多的执行过程。所以我建议使用List而不是int []

List<int> list = new List<int>();

list.Add(123);
list.Add(456);
list.Add(789);

Console.WriteLine(list[2]);