- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 C# 的新手,但对 ActionScript 3 有很深的了解。
在 AS3 中,你可以这样定义一个数组:
var array:Array = [];
然后通过 push()
向该数组添加无限项:
array.push(1);
我注意到在 C# 中你需要为数组定义一个永久的(我认为)长度,例如:
string[] array = {"this","has","a","length","of","six"};
或者:
string[] array = new string[6];
如果我尝试向数组中添加超出此数组长度的新项,我会得到一个错误:
array[6] = "failure";
我发现很难从能够自由地从数组中添加/删除项目,到现在必须定义最大长度。
当数组可以包含 0 到 10000 个实体之间的任意位置时,我不太确定在游戏环境中应该如何处理这个问题。
任何建议都会有帮助!
最佳答案
如您所知,C# 中数组的大小是固定的; Resizing an array引用指定大小的新数组实例,并将数组中的项目复制到新引用的实例中。
您在 .NET 中寻找的是 generic collections例如 List<T>
, 其中T
是某种类型的通用类型参数。在您突出显示的特定情况下,您可能希望使用 List<string>
var strings = new List<string>();
现在您可以使用 Add()
将字符串添加到集合中
strings.Add("string to add");
在 C#3 中,collection intializers引入是为了让您可以更简洁地初始化集合
var strings = new List<string> { "string1", "string2", "string3" };
当您创建一个通用集合的实例时,它以默认大小开始; List<T>
的默认大小在 .NET 4 中为 0,尽管在添加第一项时增加到 4(默认大小可能因不同的集合类型和框架版本而异,因此默认大小听起来像是一个实现细节)。集合通常由框架使用加倍策略调整大小,也就是说,当集合达到容量并且尝试添加另一个项目时,集合容量通常加倍 - 这在通用集合的实现和一些你不需要关心的事情。
当您要将已知数量的项目添加到集合中或知道要添加的项目数量的数量级时,您可能需要牢记这一点。在这种情况下,您可以考虑使用 List<T>
的重载构造函数。这需要 int
对于默认大小
var strings = new List<string>(500);
关于c# - 在 C# 中使用定长数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8498347/
我正在使用以下日期格式: d.strftime("%A, %d %B %Y %H:%m") 并且由于工作日的长度 (%A) 发生了变化,我想总是打印工作日10个字符,左边补空格,右对齐。 有点像 d.
我是一名优秀的程序员,十分优秀!