C# 创建并初始化(使用非默认值)只读 flaot 数组?

C# Create and initialize (with non-default value) a readonly flaot array?

提问人:skm 提问时间:2/28/2022 更新时间:2/28/2022 访问量:83

问:

我需要创建一个浮点数组并使用值初始化其所有元素。我正在尝试使用以下语法,但它显示错误“”。readonly1.0fThe modifier readonly is not valid for this item

int nRows = SomeData.Rows;
int nCols = SomeData.Cols;
readonly float[] myFloatArray = Enumerable.Repeat(1.0f, nRows * nCols).ToArray();
C# 数组浮 点数

评论

0赞 Johnathan Barclay 2/28/2022
是局部变量还是字段?myFloatArray
0赞 skm 2/28/2022
@JohnathanBarclay局部变量。
2赞 Johnathan Barclay 2/28/2022
不能对局部变量使用修饰符。您真的需要将数组设置为本地范围的只读吗?
0赞 skm 2/28/2022
@JohnathanBarclay:谢谢。我已经把它带到了现场:)
1赞 Crowcoder 2/28/2022
您是否知道只读意味着您不能重新分配引用,而不是你不能编辑值?

答:

1赞 Kristoffer Lerbæk Pedersen 2/28/2022 #1

如果希望数组的内容是只读的(即使可以使用修饰符也不会如此),则最接近只读数组的是 ReadOnlyCollectionreadonly

int nRows = SomeData.Rows;
int nCols = SomeData.Cols;
var myFloatArray = Array.AsReadOnly(Enumerable.Repeat(1.0f, nRows * nCols).ToArray());
// var is System.Collections.ObjectModel.ReadOnlyCollection<float>