Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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
C# 获取数组C中的项数#_C#_Arrays_Function_Parameters_Count - Fatal编程技术网

C# 获取数组C中的项数#

C# 获取数组C中的项数#,c#,arrays,function,parameters,count,C#,Arrays,Function,Parameters,Count,我需要将字符串(从一个窗口(QueryBuilder))插入(另一个窗口(Main))的数组中 大体上,我有一个方法 public void DisplayCalcQuery(string argFromQueryBuilder) { int itemsInUserBuiltQueries = UserBuiltQueries.Count(); UserBuiltQueries[itemsInUserBuiltQueries] = argFromQueryBuilder.ToS

我需要将字符串(从一个窗口(QueryBuilder))插入(另一个窗口(Main))的数组中

大体上,我有一个方法

public void DisplayCalcQuery(string argFromQueryBuilder)
{ 
    int itemsInUserBuiltQueries = UserBuiltQueries.Count();
    UserBuiltQueries[itemsInUserBuiltQueries] = argFromQueryBuilder.ToString();
    //displayng the user built query(queries) on the stack panel meant to display it.
    foreach (string query in UserBuiltQueries)
    {
        CheckBox checkQueries = new CheckBox() { Content = query };
        stackPanel1.Children.Add(checkQueries);
        checkboxes.Add(checkQueries);
    }
}
其中,
UserBuiltQueries
声明为

string[] UserBuiltQueries; 
然而,当我从另一个窗口

 backscreen.DisplayCalcQuery(ttextBox1.Text.ToString()); //where backscreen is the Main
这个参数传递得很好,但我得到一个错误

{"Value cannot be null.\r\nParameter name: source"}
我做错了什么?

在c中,但我认为在所有编程语言中,索引都是从0开始的:

因此,如果数组的长度或计数为1,则索引为0数组[0],array.lenght==1

int itemsInUserBuiltQueries = UserBuiltQueries.Count()-1;
UserBuiltQueries[itemsInUserBuiltQueries] = argFromQueryBuilder.ToString();

在使用数组之前,请仔细检查数组是否已初始化

对UserBuildQueries使用字符串[],而不是使用列表。当您需要它作为数组时,您可以简单地说:userbuildquerys.ToArry()

将函数重写为

public void DisplayCalcQuery(string argFromQueryBuilder)
{ 
  UserBuiltQueries.Add(argFromQueryBuilder.ToString());
  //displayng the user built query(queries) on the stack panel meant to display it.
  foreach (string query in UserBuiltQueries)
  {
     CheckBox checkQueries = new CheckBox() { Content = query };
     stackPanel1.Children.Add(checkQueries);
     checkboxes.Add(checkQueries);
  }
}
这些线路是错误的

int itemsInUserBuiltQueries = UserBuiltQueries.Count();
UserBuiltQueries[itemsInUserBuiltQueries] = argFromQueryBuilder.ToString();
数组从索引0开始,在索引(Count-1)结束,因此,如果
userbuiltquerys.Count()
返回10,则可以使用从0到9的索引。本质上,使用索引10,您将在数组末尾之外添加一个新字符串

但是,如果您的需求迫使您扩展阵列,那么如果您使用
列表
,则编码会更好、更容易。添加新元素会容易得多,并且您仍然可以将列表用作常见任务的数组

    List<string> UserBuiltQueries = new List<string>();

    .....

    public void DisplayCalcQuery(string argFromQueryBuilder)
    { 
        UserBuiltQueries.Add(argFromQueryBuilder);

        //displayng the user built query(queries) on the stack panel meant to display it.
        foreach (string query in UserBuiltQueries)
        {
            CheckBox checkQueries = new CheckBox() { Content = query };
            stackPanel1.Children.Add(checkQueries);
            checkboxes.Add(checkQueries);
        }
    }
List userbuiltquerys=newlist();
.....
public void displaycquery(字符串argFromQueryBuilder)
{ 
添加(argFromQueryBuilder);
//在堆栈面板上显示用户生成的查询意味着显示它。
foreach(UserBuiltQueries中的字符串查询)
{
CheckBox checkquerys=new CheckBox(){Content=query};
stackPanel1.Children.Add(checkquerys);
复选框。添加(复选查询);
}
}

顺便说一下,您应该停止不必要地将字符串转换为字符串。您传递了一个
ttextBox1.Text.ToString()
,但
ttextBox1.Text
已经是一个字符串。在方法内部,参数
argFromQueryBuilder
已经是一个字符串,不需要转换为字符串

您初始化了吗?它还没有初始化。请添加stacktrace?初始化后,
UserBuiltQueries[ItemsSinserBuiltQueries-1]
?@AnousKaseeChour在哪一行出现错误?