通过使用大量编程语言和库,我注意到用于集合中元素总数的各种术语.
最常见的似乎是length,count和size.
例如.
array.length
vector.size()
collection.count
Run Code Online (Sandbox Code Playgroud)
是否有任何首选术语?它取决于它是什么类型的集合?即.可变/不可变
是否倾向于将其作为属性而不是方法?
List<T>如果合理地知道它的初始化是否值得?
编辑:进一步提出这个问题,在阅读完第一个答案之后,这个问题实际上归结为什么是默认容量以及如何进行增长操作,是否将容量增加一倍等?
我有一个名为connectedEntites的通用列表,我在for循环中将项添加到此列表中.我在添加之前进行空检查.但即便如此,每当将项添加到此时,List<>也会添加空值.我做了调试,但现在可以添加一个空值.由于执行读取操作时该空值,程序崩溃(因为这是一个COM程序).
下面是该类的代码
public class EntityDetails
{
public ObjectId objId { get; set; }
public Handle objHandle { get; set; }
public string className { get; set; }
public override bool Equals(object obj)
{
if (obj == null) return false;
EntityDetails objAsEntityDetails = obj as EntityDetails;
if (objAsEntityDetails == null) return false;
else return Equals(objAsEntityDetails);
}
public bool Equals(EntityDetails other)
{
if (other == null)
return false;
return (this.objId.Equals(other.objId));
}
}`
Run Code Online (Sandbox Code Playgroud)
下面是您可以看到空值的图像,并且在添加项目时容量也会翻倍,但计数显示正确的值.

当我将一些流写入新的内存流时,内存流的长度和容量最初都设置为0,并随着写入过程一起增长.但在某些时候,容量增长的速度要快于长度.
写操作完成后,我得到正确的长度(与原始输入流的长度相同),但容量更大.
这是对的吗?
它们不应该是一样的吗?
我找不到任何关于它的信息
有人会帮我理解这个for循环有什么问题吗?为什么我会超出界限异常呢?
此特定列表的容量设置为8.
public static List<Beds> BedsList = new List<Beds>(8);
private int GetFirstAvailableBed()
{
var result = 0;
for (int i = 0; i < Beds.BedsList.Capacity; i++)
{
if (Beds.BedsList[i] == null) // Here is trhowing the exception
{
result = i;
break;
}
}
return result;
}
Run Code Online (Sandbox Code Playgroud) c# ×4
list ×2
capacity ×1
collections ×1
copy ×1
generic-list ×1
generics ×1
loops ×1
memorystream ×1
semantics ×1
stream ×1
terminology ×1