c# - 如何在不更改原始数组的情况下更改函数中的数组?
问题描述
在 C# 和许多其他语言中,如果将数组传递给函数,它会传递指针/引用,这意味着您可以从函数内部更改数组的值。
来自微软:
数组可以作为参数传递给方法参数。因为数组是引用类型,所以该方法可以更改元素的值。
我有一个特殊情况,我需要从函数访问和更改数组的内容,但我不想更改原始数组。我认为这会很简单。我可以设置一个等于旧数组的新数组并更改新数组。然而,它的作用是一样的,因为新数组只是指向旧数组的指针。
static void AddToArray(string[] array) {
var newArray = array;
newArray[2] = "y";
}
static void Main(string[] args) {
string[] array = new string[5];
array[0] = "h";
array[1] = "e";
AddToArray(array);
}
如果打印array
每一步的内容:
"he"
"hey" (inside function)
"hey" (after function call)
我在网上做了很多研究,但不知何故还没有找到很多其他需要帮助的人。非常感谢您的建议!
解决方案
您不是在函数内部使用“new”关键字创建数组。更改以下行 -
var newArray = 数组;
至
var newArray = 新字符串[args.Length];
并将其创建为新数组后,您可以从 args (passed) 数组中复制值
推荐阅读
- signal-processing - 负幅值的快速傅里叶变换
- python-3.x - 读取文件并计算python中列中的单词
- angular - 如何根据一个select选项确定剩下的select需要绑定的值?
- c - 使用管道,从父进程中读取 2 个数字,子进程计算它们的总和并为父进程提供打印结果
- mongodb - 在Mongodb中,主键(IDHACK)和辅助键(IXSCAN)的工作流程有什么区别?
- html - 如何在网站中使用 html 和 css 使用没有背景的图像(即使它不应该有白色背景)
- python-3.x - 从列表中删除元素,然后显示没有删除元素的列表
- reactjs - 直接链接在反应路由器dom中不起作用
- ssl - syslog-ng 无法通过 tls 发送日志 - 握手错误
- macos - 如何告诉 ./configure 文件从哪里获取依赖项?