gpt4 book ai didi

c# - 如何在变量声明 (CS0270) 中强制执行数组的长度?

转载 作者:太空宇宙 更新时间:2023-11-03 20:54:50 24 4
gpt4 key购买 nike

为什么 C# 的设计不允许这样的声明?

public int[10] someInts;
public int[10] someMethod();

这些行抛出 CS0270 错误。这背后的原因是什么?在某些情况下,在接口(interface)中强制执行数组长度或覆盖类的能力会很有用。

编辑:

继 Marc Gravell 的评论之后,我想指出的是,数组的长度在创建时已知,就像它的类型一样。如果我们可以在将数组分配给字段/返回值时强制执行数组的类型,为什么我们不能强制执行它的长度?它会使这样的代码失败:

int length = 10;
int[] arr = new int[length];
int[10] anotherArr = arr; //length not known at compile time

和这个一样:

string obj1 = "";
object obj2 = "";
obj1 = obj2; //cannot implicitly convert type 'object' to 'string'

最佳答案

数组的长度是在您创建时确定的;您没有在那里创建任何数组,因此无法确定长度。您不能在字段签名或方法签名的返回部分中定义数组的长度。

  • 该字段仅包含对数组的引用:它的长度取决于创建数组并将其分配给该字段的代码
  • 该方法只返回一个数组:它的长度取决于创建数组并返回它的代码

长度是声明的一部分的唯一一次是“固定缓冲区”,但是:那不是数组(它有点像数组,但是:不是数组;它也是大多数人永远不需要使用的高级主题)。

关于c# - 如何在变量声明 (CS0270) 中强制执行数组的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51585325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com