我正在做一个控制台应用程序,如果传递的number by参数作为数组的元素出现多次,则删除数组的元素。
我已经完成了主算法但是我无法将元素设置为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();
}
提前致谢! : - )
答案 0 :(得分:1)
我不完全确定你追求的是什么,但让我理顺一些事情。这应该可以解决您的问题。
例如:int
是值类型,因此不能设置为null。但是,您可以使用object
或更好的整数:使用nullable-int变体:int?
,并将其设置为null。
简而言之,这不起作用:
int[] foo = new int[10];
foo[1] = null; // error: int is a value type
所以,在代码中:
List<int> foo = new List<int> { 1,2,3,4,5};
foo.RemoveAt(2);
有些数据结构更适合随机删除&#39;如果这就是你想要的。例如,链接列表允许您删除中间元素而不移动所有数据,如果您需要一组值,请使用HashSet
或Dictionary
<。 / p>
当然可能,可能效率不高:
int[] array = new int[10]; //...
Array.Copy(array, src, array, src-1, array.Length - src - 1);
Array.Resize(ref array, array.Length-1);
答案 1 :(得分:0)
您可以使用LINQ删除重复的元素:
var intArray = new[] { 10, 2, 2, 3, 4 };
var remove = intArray.Distinct().ToArray();
正如其他人所说,没有NULL int。
同样,您可以使用List
尝试相同的操作List<Type> list1 = list.Distinct().ToList<Type>();