I have an array of int containing some values starting from index 0. I want to swap two values for example value of index 0 should be swapped with the value of index 1. How can I do this in the c# array?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
You could create an extension method that would work for any array
public static void SwapValues<T>(this T[] source, long index1, long index2)
{
T temp = source[index1];
source[index1] = source[index2];
source[index2] = temp;
}
回答2:
If you really only want to swap, you can use this method:
public static bool swap(int x, int y, ref int[] array){
// check for out of range
if(array.Length <= y || array.Length <= x) return false;
// swap index x and y
var buffer = array[x];
array[x] = array[y];
array[y] = buffer;
return true;
}
x and y are the indizies, that should be swapped.
If you want to swap with any type of array, then you can do it like this:
public static bool swap<T>(this T[] objectArray, int x, int y){
// check for out of range
if(objectArray.Length <= y || objectArray.Length <= x) return false;
// swap index x and y
T buffer = objectArray[x];
objectArray[x] = objectArray[y];
objectArray[y] = buffer;
return true;
}
And you can call it like:
string[] myArray = {"1", "2", "3", "4", "5", "6"};
if(!swap<string>(myArray, 0, 1)) {
Console.WriteLine("x or y are out of range!");
return;
}
回答3:
static void SwapInts(int[] array, int position1, int position2)
{
int temp = array[position1]; // Copy the first position's element
array[position1] = array[position2]; // Assign to the second element
array[position2] = temp; // Assign to the first element
}
call this function and print elemet
回答4:
swap only two values only once or want to do the same for the entire array.
Assuming that you only want to swap only two only once and is of type integer, then you can try this:
int temp=0;
temp=arr[0];
arr[0]=arr[1];
arr[1]=temp;
回答5:
I just wrote something similar, so here is a version that
- uses generics so that it works on ints, strings etc,
- uses extension methods
- comes with a test class
Enjoy :)
[TestClass]
public class MiscTests
{
[TestMethod]
public void TestSwap()
{
int[] sa = {3, 2};
sa.Swap(0, 1);
Assert.AreEqual(sa[0], 2);
Assert.AreEqual(sa[1], 3);
}
}
public static class SwapExtension
{
public static void Swap<T>(this T[] a, int i1, int i2)
{
T t = a[i1];
a[i1] = a[i2];
a[i2] = t;
}
}