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

.NET Framework 4.8.1中无法使用Array.Fill<>()的问题求助

解决.NET Framework 4.8.1中无Array.Fill<>()方法的问题

首先明确:.NET Framework 4.8.1并不支持Array.Fill<>()方法——这个API是.NET Core 2.0、.NET 5及后续版本才引入的专属API,所以你在.NET Framework项目中无论怎么引用命名空间或查找DLL都无法使用它。

给你几个可行的替代方案:

  • 手动循环填充(原地修改,和Java的Arrays.fill行为一致)
    直接遍历数组赋值,这是最直接且性能友好的方式:

    bool[] used = new bool[yourArrayLength];
    for (int i = 0; i < used.Length; i++)
    {
        used[i] = false;
    }
    

    若填充其他类型,只需把false替换为对应目标值即可。

  • 封装通用填充方法(复用性强)
    可以自己实现一个和Java Arrays.fill逻辑一致的通用方法,方便在项目中多次使用:

    public static void FillArray<T>(T[] array, T value)
    {
        if (array == null)
            throw new ArgumentNullException(nameof(array));
            
        for (int i = 0; i < array.Length; i++)
        {
            array[i] = value;
        }
    }
    

    使用时直接调用:FillArray(used, false);

  • LINQ方式(注意:会创建新数组)
    如果你不介意生成新数组而非原地修改,可以用LINQ的Enumerable.Repeat(需要引入System.Linq命名空间):

    bool[] used = Enumerable.Repeat(false, yourArrayLength).ToArray();
    

    这种方式代码简洁,但要注意它会返回一个新数组,原数组不会被修改。

另外提醒:无需再尝试查找或添加System.Runtime.dll,.NET Framework中的该组件并不包含Array.Fill方法,重装修复.NET Framework或Visual Studio也无法解决这个问题——本质是API支持版本的差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 21:57:07