.net &引用;asdf";。长度>;0对;asdf";。任何()?

.net &引用;asdf";。长度>;0对;asdf";。任何()?,.net,arrays,extension-methods,performance,.net,Arrays,Extension Methods,Performance,数组属性是如何通过内部变量(即m_长度)标识的,还是它将枚举数组的所有项 如果要检查数组是否包含任何元素,则会出现差异 Dim asdf = { "a"c, "s"c, "d"c, "f"c } Dim any = asdf.Any() Dim any2 = asdf.Length > 0 (还要注意,这是一个扩展方法,我想考虑调用内部get_Length与调用ex.方法的性能比较。数组。Length是一个属性,是一个O(1)操作。数组的长度在创建时是已知的,因此在访问length属性时

数组属性是如何通过内部变量(即m_长度)标识的,还是它将枚举数组的所有项

如果要检查数组是否包含任何元素,则会出现差异

Dim asdf = { "a"c, "s"c, "d"c, "f"c }
Dim any = asdf.Any()
Dim any2 = asdf.Length > 0

(还要注意,这是一个扩展方法,我想考虑调用内部get_Length与调用ex.方法的性能比较。

数组。Length
是一个属性,是一个O(1)操作。数组的长度在创建时是已知的,因此在访问length属性时没有理由枚举整个数组。
Any()
应该相当快,如果集合类型可以更改为任何其他
IEnumerable
,则肯定很有用,但长度不会影响性能


另外,您的特定示例使用的是字符串而不是数组,但消息是相同的。字符串的长度在创建时已知,因此当您访问属性时,
length
不需要枚举字符串中的字符。

数组。length
是一个属性和一个O(1)操作。数组的长度在创建时是已知的,因此在访问length属性时没有理由枚举整个数组。
Any()
应该相当快,如果集合类型可以更改为任何其他
IEnumerable
,则肯定很有用,但长度不会影响性能


另外,您的特定示例使用字符串而不是数组,但消息是相同的。字符串的长度在创建时已知,因此当您访问属性时,
length
不需要枚举字符串中的字符。

代码中的
asdf
变量不是数组,而是
字符串
。恰好
String
有一个
Length
属性并实现了
IEnumerable
,它允许您调用
Any()

尽管如此,要回答实际问题,确定数组的长度不需要枚举;长度作为数组的一部分存储


从技术上讲,使用
Length
比调用
Any()
要快(因为这必须为数组创建一个枚举数,然后调用
MoveNext
一次)检查
Length
变量更符合惯例。

代码中的
asdf
变量不是数组,而是
String
。碰巧
String
具有
Length
属性并实现
IEnumerable
,这是允许您调用
Any()

尽管如此,要回答实际问题,确定数组的长度不需要枚举;长度作为数组的一部分存储


从技术上讲,使用
Length
比调用
Any()
要快(因为这必须为数组创建一个枚举数,然后调用
MoveNext
一次),虽然差异可能可以忽略不计。但是检查
长度
变量更符合惯例。

Shalooooom chaver!!!!!!!!!!!!!!!!!!!!!kachol-lavan mamatzav gissaty:)Shalooooom chaver!!!!!!!!!!!!!!!!!!!!kachol-lavan mamatzav gissaty:)