gpt4 book ai didi

c# - 在 C# 中将子数组作为数组传递

转载 作者:行者123 更新时间:2023-11-30 19:34:40 25 4
gpt4 key购买 nike

这很简单,我敢肯定,但我似乎无法在谷歌上找到它。

如果我有一个函数:

foo(int[] a) {}

我想用一个数组的子数组来调用它:

for instance: myNums[3]+ (i.e. an array {4,5,6}), given myNums:
int[] myNums = { 1,2,3,4,5,6};

当然,我不想只创建那些子项的新数组。我当然可以只传递数组和索引,但那样我就必须编写所有带有偏移量的函数代码……很丑。

那么,如何在 C# (.NET 2.0) 中执行此操作?

foo(&myNums[3]) 报告不安全。

foo(myNums[3]) 不会工作(它只传递一个 int)。

我需要将其映射到某种集合吗?

最佳答案

C# 不支持将数组地址传递给函数。要么你必须使用 unsafe 方法来完成它,代码将类似于 C(尽管你需要使用 unsafe 选项进行编译)。或者您必须按照托管代码的方式对其进行编码,在这种情况下,传递偏移量

    public Form1()
{
InitializeComponent();
int[] a = { 4, 5, 6, 7, 8 };

unsafe
{
fixed (int* c = a)
{
SubArrayPointer(c + 3);
}
}
SubArray(a, 3);
}

unsafe void SubArrayPointer(int* d)
{
MessageBox.Show(string.Format("Using pointer, outputs 7 --> {0}", *d));
}

void SubArray(int[] d, int offset)
{
MessageBox.Show(string.Format("Using offset, outputs 7 --> {0}", d[offset]));
}

关于c# - 在 C# 中将子数组作为数组传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1210280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com