C#string [] arrayA在arrayA [3]中返回空值

法米耶兹

我的代码中有很多数组,例如;

string[] arrayA = new string[31];

我需要将数组中的值放入SQL数据库

SqlCommand commA = new SqlCommand("INSERT INTO dbo.DatabaseA" +
            " (ColumnA) VALUES" +
            " (@ColumnA)", connA);
commA.Parameters.Add("@ColumnA", SqlDbType.NVarChar).Value = arrayA[3];

为什么@ColumnA返回错误“未提供值”或确切地说是arrayA[3] = null我一直认为未分配的string []具有""初始值。

如果一开始我分配arrayA[3] = ""前的SQLCommand代码的工作就好了。

有没有一种方法来填充所有string[] arrayA""不使用循环?

尼科

根据提供的代码,没有将分配给arrayA[3]数组的值只是将其存储为值的容器,并将每个值设置为类似于going的类型的默认值default(string)

现在,作为string一个参考类型的字符串的默认值是null然而一个值类型 int例如将具有默认值0

我们可以轻松地对此进行测试。

string[] arrayA = new string[31];
var s = arrayA[3]; //is null as string is a reference type

int[] arrayB = new int[31];
var i = arrayB[3]; //equals 0 as default(int) = 0

现在,正如注释中指出的那样,有一些简单的方法可以填充数组,并且引用的注释指向如何使用单个值填充/实例化C#数组?

下面的摘录来自上面的答案

public static void Populate<T>(this T[] arr, T value ) {
  for ( int i = 0; i < arr.Length;i++ ) {
    arr[i] = value;
  }
}

可以这样称呼:

arrayA.Populate("");

因此,在通话中:

commA.Parameters.Add("@ColumnA", SqlDbType.NVarChar).Value = arrayA[3];

实际上 arrayA[3] = null

编辑上面的代码段是一个扩展方法(如this方法签名中第一个参数上的关键字所示)。这必须static class类似于以下内容。

public static class ArrayExtensions
{
    public static void Populate<T>(this T[] arr, T value)
    {
        for (int i = 0; i < arr.Length; i++)
        {
            arr[i] = value;
        }
    }
}

至于问题

有没有一种方法可以使用“”填充所有string [] arrayA而无需使用for循环?

设置数组中所有项目默认值的所有方法都将需要某种形式的循环,并且该循环可能在某处foreachfor后面。

您还可以创建一个方法,该方法将为您创建一个具有默认值的指定大小的数组。

public static T[] CreateArray<T>(int capacity, T defaultValue)
{
    var array = new T[capacity];
    array.Populate(defaultValue);
    return array;
}

然后可以将其称为:

var arrayC = ArrayExtensions.CreateArray<string>(31, "");
s = arrayC[3]; //equals ""

但是,这对我来说似乎太懒了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C#中解析JSON返回空值

来自分类Dev

C#JsonConvertDeserialization返回空值

来自分类Dev

为什么在C#中反序列化我的packages.config返回空值?

来自分类Dev

在C#中反序列化嵌套数组JSON返回空值

来自分类Dev

在C函数调用中返回空项目

来自分类Dev

c# 中的 FLWOR XQuery 返回空?

来自分类Dev

c#string [] args无法正确读取包含来自vbscript的空格的短语

来自分类Dev

对C#类的肥皂响应始终返回空值

来自分类Dev

如何将一个数组元素添加到另一个数组。例如将 ganguly 添加到 arrayA 并在那里删除 sachin

来自分类Dev

具有超大数组的C#string(char [])构造函数无法进行相等比较

来自分类Dev

LWJGL 3 malloc 返回空值?

来自分类Dev

在php中为数组返回空值

来自分类Dev

Spring Boot中的查询返回空值

来自分类Dev

在Google Apps脚本中返回空值

来自分类Dev

Textarea在PHP POST中返回空值

来自分类Dev

Kurento在结果中返回空值

来自分类Dev

JavaScript中的Stringify返回空值

来自分类Dev

在 int[] 数组中返回空值

来自分类Dev

onClick 中的 findViewById 返回空值

来自分类Dev

将XML反序列化为C#对象,返回空值

来自分类Dev

c#无法与firebase连接以及SetTaskAsync为什么使用当前代码返回空值

来自分类Dev

C#-数据绑定组合框始终为.selectedItem或.selectedValue返回空值

来自分类Dev

GetMethod 返回空 c#

来自分类Dev

fread()返回C中的值

来自分类Dev

C ++中的返回值

来自分类Dev

sharedPreferences返回空值

来自分类Dev

$ _POST返回空值

来自分类Dev

返回空值

来自分类Dev

JsonArray返回空值