You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

函数中调整C#数组大小后返回仍为原尺寸的问题求助

问题解决:数组Resize后主文件长度未更新

问题原因

C#里数组是引用类型,但默认传参是按值传递引用——你传给namesSetup的是原数组引用的副本。Array.Resize(ref Names, 65)会创建一个新的长度为65的数组,并把函数内的Names参数(那个引用副本)指向新数组,但这不会改变主文件里原Names变量的引用。再加你没接收函数返回的新数组,所以主文件里的数组还是原来的空数组。

另外你代码里的Array.Clear(Names, 0, Names.Length)完全没用,因为原数组长度是0,根本没元素可清;而且Array.Resize生成的新数组本身元素就是默认的null,不需要额外清空。


解决方案一:接收函数返回值

直接把函数返回的新数组赋值给主文件的Names变量:

// 主文件代码修改
string[] Names = new string[0];
// 接收返回的新数组,覆盖原变量引用
Names = selectCode.namesSetup(Names);

函数代码可以保留原样(建议删掉没用的Array.Clear):

public string[] namesSetup(string[] Names)
{
    Array.Resize(ref Names, 65);
    return Names;
}

解决方案二:用ref关键字传递参数

给函数参数加上ref,让函数直接修改原变量的引用,不需要返回值:

// 函数代码修改
public void namesSetup(ref string[] Names)
{
    Array.Resize(ref Names, 65);
}

主文件调用时也要加上ref:

// 主文件代码修改
string[] Names = new string[0];
selectCode.namesSetup(ref Names);

内容的提问来源于stack exchange,提问作者LiamTrader

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 01:09:57