相关疑难解决方法(0)

如何使用单个值填充/实例化C#数组?

我知道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#如何在幕后处理这些对象的内存分配的结果,所以我想这可能不可能做到这一点.但我仍然想知道!

c# arrays default-value

188
推荐指数
15
解决办法
23万
查看次数

C#中的memset相当于什么?

我需要byte[]用一个非零值填充一个.如何在C#中执行此操作而不循环遍历byte数组中的每个?

更新:评论似乎将此分为两个问题 -

  1. 是否有一个Framework方法来填充可能类似于的byte [] memset
  2. 当我们处理一个非常大的数组时,最有效的方法是什么?

我完全同意,正如埃里克和其他人所指出的,使用一个简单的循环就可以了.问题的关键是看我是否可以学习一些关于C#的新东西:)我认为Juliet的并行操作方法应该比简单的循环更快.

基准: 感谢Mikael Svenson:http://techmikael.blogspot.com/2009/12/filling-array-with-default-value.html

事实证明,for除非你想使用不安全的代码,否则简单的循环是可行的.

抱歉我的原帖不清楚.埃里克和马克的评论都是正确的; 需要有更多专注的问题.感谢大家的建议和回应.

c# memset equivalent

78
推荐指数
11
解决办法
6万
查看次数

C#等同于Java的Arrays.fill()方法

我在Java中使用以下语句:

Arrays.fill(mynewArray, oldArray.Length, size, -1);
Run Code Online (Sandbox Code Playgroud)

请建议等效的C#.

c# java arrays

6
推荐指数
1
解决办法
7710
查看次数

标签 统计

c# ×3

arrays ×2

default-value ×1

equivalent ×1

java ×1

memset ×1