.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替换为对应目标值即可。封装通用填充方法(复用性强)
可以自己实现一个和JavaArrays.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
相关产品推荐
相关产品推荐

