如何在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();
}
提前感谢!: -)
我不完全确定您想要什么,但让我澄清一些事情。这应该能解决你的问题。
- 如果你想将数组中的元素设置为null,请确保数组的元素类型是引用类型。
例如:int
为值类型,不能设置为null。然而,您可以使用object
,或者更好的整数:使用nulable -int变体:int?
,并将其设置为null。
简而言之,这行不通:
int[] foo = new int[10];
foo[1] = null; // error: int is a value type
- 如果你想修改一个数组,在一个列表中做;尽管您可以realloc和复制数组的元素,但这很容易出错,并可能给您带来问题。 因此,在代码中:
- 如果你在List的中间删除了很多元素,你可能不是在寻找List。
- 如果你仍然想要一个数组…
List<int> foo = new List<int> { 1,2,3,4,5};
foo.RemoveAt(2);
如果你想要的话,有更适合"随机删除"的数据结构。例如,链表允许您在不移动所有数据的情况下删除中间元素,如果您需要"值袋",请使用HashSet
或Dictionary
。
这当然是可能的,只是可能不是很有效:
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>();