Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
生成Json对象时,C#索引超出了数组的边界_C#_Asp.net - Fatal编程技术网

生成Json对象时,C#索引超出了数组的边界

生成Json对象时,C#索引超出了数组的边界,c#,asp.net,C#,Asp.net,我创建了一个类: internal class Movie { public class BaseResponse { public Item[] search { get; set; } public string response { get; set; } } public class Item { public string title { get; set; } }

我创建了一个类:

internal class Movie
{
    public class BaseResponse
    {
        public Item[] search { get; set; }
        public string response { get; set; }
    }

    public class Item
    {
        public string title { get; set; }            
    }
我想为搜索数组创建n个对象,如下所示:

public void Generate()
{
   Movie.BaseResponse baseResponse = new Movie.BaseResponse();
   baseResponse.response = "True!";

   baseResponse.search = new Movie.Item[] { new Movie.Item()};
   baseResponse.search[0].title = "Title one";
   baseResponse.search[1].title = "Title two"; //Error accurs here****

   string response = JsonConvert.SerializeObject(baseResponse);
}
但此脚本工作不正常,并出现以下错误:

索引超出了数组的边界


有人能解释一下如何在
电影
类中创建
搜索
数组的n个对象吗?

您已经创建了一个包含1个项目的数组,但是您正在尝试访问不存在的第二个项目

将相关行更改为类似以下内容:

baseResponse.search = new Movie.Item[] { new Movie.Item(), new Movie.Item() };

与其使用数组(
T[]
),不如使用
列表
。您需要提前知道一个数组中有多少项(因为它们是连续分配的)。您可以随时向列表中添加新项目

更改代码:

internal class Movie
{
    public class BaseResponse
    {
        public List<Item> Search { get; set; } = new List<Item>();
        public string Response { get; set; }
    }

    public class Item
    {
        public string Title { get; set; }            
    }
}


public void Generate()
{
   Movie.BaseResponse baseResponse = new Movie.BaseResponse();
   baseResponse.Response = "True!";

   baseResponse.Search.Add (new Movie.Item { Title = "Title One" }); 
   baseResponse.Search.Add (new Movie.Item { Title = "Title Two" }); 

   string response = JsonConvert.SerializeObject(baseResponse);
}

baseResponse.search=new Movie.Item[]{new Movie.Item()}
在数组中只定义一个项,因此
[1]
抛出错误。如果您想要更多,请在括号内添加更多
new Movie.Item()
调用。@RonBeyer:正如我所说,我需要创建n个对象。例如,我无法添加“new Movie.Item()”100次。有没有办法在不定义计数的情况下创建对象?您需要创建n个对象,所以使用循环,这里的问题是什么?您创建了一个包含项的数组,如果需要创建包含n个项的数组,请使用循环。正如我所说,我需要创建n个对象。例如,我无法添加“new Movie.Item()”100次。有没有办法在不定义计数的情况下创建对象?请您澄清一下,我如何在“Movie”类中使用List而不是“public string search”?@E.Mamaghani。好了<代码>列表几乎总是比T数组好。
{
    "Search":[
        {"Title":"Title One"},
        {"Title":"Title Two"}],
     "Response":"True!"
}