csharp Array取地址
时间: 2023-11-24 14:51:49 浏览: 41
在C#中,可以使用`&`运算符获取数组的地址。下面是两个例子:
1. 一维数组的地址
```csharp
int[] MyArray1 = new int[5];
fixed (int* p = MyArray1)
{
Console.WriteLine((int)p); // 输出数组的地址
}
```
2. 多维数组的地址
```csharp
int[,,] MyArray2 = new int[5, 3, 2];
fixed (int* p = MyArray2)
{
Console.WriteLine((int)p); // 输出数组的地址
}
```
相关问题
c# 数组里随机取多个数不重复的
在 C# 中实现从数组中随机取多个数不重复可以使用洗牌算法(Fisher-Yates Shuffle Algorithm)。以下是一个简单的实现:
```csharp
public static T[] Shuffle<T>(T[] array, int count)
{
var random = new Random();
var result = new T[count];
Array.Copy(array, result, count);
for (int i = count; i < array.Length; i++)
{
var j = random.Next(i + 1);
if (j < count)
{
result[j] = array[i];
}
}
return result;
}
```
在上面的代码中,`Shuffle`方法接受两个参数:要随机取数的数组`array`和要取的数的个数`count`。该方法返回一个新的数组,包含从`array`数组中随机取的`count`个不重复的元素。
使用示例:
```csharp
var array = new[] { 1, 2, 3, 4, 5 };
var result = Shuffle(array, 3);
foreach (var item in result)
{
Console.WriteLine(item);
}
```
上面的代码中,`Shuffle`方法将从`array`数组中随机取3个不重复的元素,并将它们存储在`result`数组中。具体的实现方法是,首先将前`count`个元素复制到`result`数组中,然后从`count`到数组末尾进行遍历,对于每个元素,随机生成一个小于等于当前下标的随机数`j`,如果`j`小于`count`,则将该元素存储在`result`数组中的第`j`个位置。这样就可以保证取出的元素不重复,并且随机性较好。
C# 如何分段取一个数组的3/4赋值给另一个数组
假设有两个数组 `source` 和 `destination`,需要将 `source` 数组的前 3/4 部分分段复制到 `destination` 数组中,可以按以下步骤操作:
1. 计算 `source` 数组前 3/4 部分的长度,使用 C# 内置的整数除法 `/`。
```csharp
int length = source.Length * 3 / 4;
```
2. 使用 `Array.Copy` 方法将 `source` 数组前 3/4 部分分段复制到 `destination` 数组中。其中,第一个参数指定源数组,第二个参数指定源数组的起始位置,第三个参数指定目标数组,第四个参数指定目标数组的起始位置,第五个参数指定要复制的元素个数。
```csharp
Array.Copy(source, 0, destination, 0, length);
```
完整代码如下:
```csharp
int length = source.Length * 3 / 4;
Array.Copy(source, 0, destination, 0, length);
```