如何在c#中设置数组的特定元素为null

本文关键字:元素 null 数组 设置 | 更新日期: 2023-09-27 17:53:12

我正在做一个控制台应用程序,如果通过参数传递的数字作为数组元素出现多次,则删除数组中的一个元素。

我已经完成了主要算法,但我不能将元素设置为null。下面是我的代码:

static int[] RemoveElement(ref int[] array, int num)
{
    int i;
    for (i = 0; i < array.Length; i++)
    {
        if (array[i] == num)
        {
            array[i] = 1; //This is a temporal solution.
        }
    }
    return array;
}

下面是Main:

static void Main(string[] args)
{
    int[] a = {10, 2, 2, 3, 4};
    Console.WriteLine("Write a number:");
    int b = int.Parse(Console.ReadLine());
    int[] arrayInts = RemoveElement(ref a, b);
    foreach (var variable in arrayInts)
    {
        Console.WriteLine(variable);
    }
    Console.ReadKey();
}

提前感谢!: -)

如何在c#中设置数组的特定元素为null

我不完全确定您想要什么,但让我澄清一些事情。这应该能解决你的问题。

  1. 如果你想将数组中的元素设置为null,请确保数组的元素类型是引用类型。

例如:int为值类型,不能设置为null。然而,您可以使用object,或者更好的整数:使用nulable -int变体:int?,并将其设置为null。

简而言之,这行不通:

int[] foo = new int[10];
foo[1] = null; // error: int is a value type
  • 如果你想修改一个数组,在一个列表中做;尽管您可以realloc和复制数组的元素,但这很容易出错,并可能给您带来问题。
  • 因此,在代码中:
    List<int> foo = new List<int> { 1,2,3,4,5};
    foo.RemoveAt(2);
    
  • 如果你在List的中间删除了很多元素,你可能不是在寻找List。
  • 如果你想要的话,有更适合"随机删除"的数据结构。例如,链表允许您在不移动所有数据的情况下删除中间元素,如果您需要"值袋",请使用HashSetDictionary

  • 如果你仍然想要一个数组…
  • 这当然是可能的,只是可能不是很有效:

    int[] array = new int[10]; //...
    Array.Copy(array, src, array, src-1, array.Length - src - 1);
    Array.Resize(ref array, array.Length-1);
    

    您可以使用LINQ删除重复的元素:

    var intArray = new[] { 10, 2, 2, 3, 4 };
    var remove = intArray.Distinct().ToArray();
    

    也正如其他人所说,没有NULL int。

    同样,您可以使用List

    尝试相同的操作。
    List<Type> list1 = list.Distinct().ToList<Type>();