我知道C#中实例化的值类型数组会自动填充类型的默认值(例如,对于bool为false,对于int为0等).
有没有办法使用不是默认值的种子值自动填充数组?之后是创建还是内置方法(比如Java的Arrays.fill())?假设我想要一个默认为true的布尔数组,而不是false.是否有内置的方法来执行此操作,或者您只需要使用for循环遍历数组?
// Example pseudo-code:
bool[] abValues = new[1000000];
Array.Populate(abValues, true);
// Currently how I'm handling this:
bool[] abValues = new[1000000];
for (int i = 0; i < 1000000; i++)
{
abValues[i] = true;
}
Run Code Online (Sandbox Code Playgroud)
必须遍历数组并将每个值"重置"为true似乎是无效的.有没有办法解决?也许通过翻转所有价值观?
在输出这个问题并思考之后,我猜测默认值只是C#如何在幕后处理这些对象的内存分配的结果,所以我想这可能不可能做到这一点.但我仍然想知道!
我需要byte[]用一个非零值填充一个.如何在C#中执行此操作而不循环遍历byte数组中的每个?
更新:评论似乎将此分为两个问题 -
memset我完全同意,正如埃里克和其他人所指出的,使用一个简单的循环就可以了.问题的关键是看我是否可以学习一些关于C#的新东西:)我认为Juliet的并行操作方法应该比简单的循环更快.
基准: 感谢Mikael Svenson:http://techmikael.blogspot.com/2009/12/filling-array-with-default-value.html
事实证明,for除非你想使用不安全的代码,否则简单的循环是可行的.
抱歉我的原帖不清楚.埃里克和马克的评论都是正确的; 需要有更多专注的问题.感谢大家的建议和回应.
我在Java中使用以下语句:
Arrays.fill(mynewArray, oldArray.Length, size, -1);
Run Code Online (Sandbox Code Playgroud)
请建议等效的C#.