草庐IT

ienumerable

全部标签

c# - 如何创建调用 IEnumerable<TSource>.Any(...) 的表达式树?

我正在尝试创建一个表示以下内容的表达式树:myObject.childObjectCollection.Any(i=>i.Name=="name");为清楚起见,我有以下内容://'myObject.childObjectCollection'isrepresentedhereby'propertyExp'//'i=>i.Name=="name"'isrepresentedhereby'predicateExp'//butIamstrugglingwiththeAny()methodreference-ifImaketheparentmethod//non-genericExpress

c# - 如何创建调用 IEnumerable<TSource>.Any(...) 的表达式树?

我正在尝试创建一个表示以下内容的表达式树:myObject.childObjectCollection.Any(i=>i.Name=="name");为清楚起见,我有以下内容://'myObject.childObjectCollection'isrepresentedhereby'propertyExp'//'i=>i.Name=="name"'isrepresentedhereby'predicateExp'//butIamstrugglingwiththeAny()methodreference-ifImaketheparentmethod//non-genericExpress

c# - 通过反射判断一个属性是否是一种数组

如何确定一个属性是否是一种数组。例子:publicboolIsPropertyAnArray(PropertyInfoproperty){//returntrueiftypeisIList,IEnumerable,ObservableCollection,etc...} 最佳答案 您似乎在问两个不同的问题:类型是数组(例如string[])还是任何集合类型。对于前者,只需检查property.PropertyType.IsArray.对于后者,您必须决定您希望类型符合的最低标准是什么。例如,您可以检查非通用IEnumerable通过

c# - 通过反射判断一个属性是否是一种数组

如何确定一个属性是否是一种数组。例子:publicboolIsPropertyAnArray(PropertyInfoproperty){//returntrueiftypeisIList,IEnumerable,ObservableCollection,etc...} 最佳答案 您似乎在问两个不同的问题:类型是数组(例如string[])还是任何集合类型。对于前者,只需检查property.PropertyType.IsArray.对于后者,您必须决定您希望类型符合的最低标准是什么。例如,您可以检查非通用IEnumerable通过

C#:如何使 IEnumerable<T> 线程安全?

假设我有这个简单的方法:publicIEnumerableGetNumbers(){uintn=0;while(n你如何使这个线程安全?我的意思是,您将获得该枚举器一次,并让多个线程处理所有数字,而不会出现重复数字。我想某处需要使用锁,但该锁必须在哪里才能使迭代器block是线程安全的?一般来说,如果你想要线程安全,你需要记住什么IEnumerable?或者更确切地说,我猜这将是一个线程安全的IEnumerator...? 最佳答案 这样做存在一个固有的问题,因为IEnumerator兼有MoveNext()和Current.你真的

C#:如何使 IEnumerable<T> 线程安全?

假设我有这个简单的方法:publicIEnumerableGetNumbers(){uintn=0;while(n你如何使这个线程安全?我的意思是,您将获得该枚举器一次,并让多个线程处理所有数字,而不会出现重复数字。我想某处需要使用锁,但该锁必须在哪里才能使迭代器block是线程安全的?一般来说,如果你想要线程安全,你需要记住什么IEnumerable?或者更确切地说,我猜这将是一个线程安全的IEnumerator...? 最佳答案 这样做存在一个固有的问题,因为IEnumerator兼有MoveNext()和Current.你真的

c# - 为什么 Enumerable.Cast 引发 InvalidCastException?

如果我可以隐式地将整数值转换为double值,例如:inta=4;doubleb=a;//nowbholds4.0为什么我不能这样做:int[]intNumbers={10,6,1,9};double[]doubleNumbers2=intNumbers.Cast().ToArray();我收到“指定的转换无效”InvalidCastException异常。相反的操作(从double转换为int)会导致相同的错误。我做错了什么? 最佳答案 好吧,您对Cast的期望不正确,仅此而已-它旨在处理装箱/拆箱、引用和身份转换,仅此而已。不幸

c# - 为什么 Enumerable.Cast 引发 InvalidCastException?

如果我可以隐式地将整数值转换为double值,例如:inta=4;doubleb=a;//nowbholds4.0为什么我不能这样做:int[]intNumbers={10,6,1,9};double[]doubleNumbers2=intNumbers.Cast().ToArray();我收到“指定的转换无效”InvalidCastException异常。相反的操作(从double转换为int)会导致相同的错误。我做错了什么? 最佳答案 好吧,您对Cast的期望不正确,仅此而已-它旨在处理装箱/拆箱、引用和身份转换,仅此而已。不幸

c# - 为什么 .net 中的数组只实现 IEnumerable 而不是 IEnumerable<T>?

我正在实现自己的ArrayList类,当我意识到这一点时感到很惊讶publicSystem.Collections.Generic.IEnumeratorGetEnumerator(){return_array.GetEnumerator();}没用。数组不在.NET中实现IEnumerator的原因是什么?有什么解决方法吗?谢谢 最佳答案 数组确实实现了IEnumerable,但它是作为CLI对数组的特殊知识的一部分完成的。这就像它是一个显式实现一样工作(但不是:它是在运行时完成的)。许多工具不会显示此实现,这在Remarks中有

c# - 为什么 .net 中的数组只实现 IEnumerable 而不是 IEnumerable<T>?

我正在实现自己的ArrayList类,当我意识到这一点时感到很惊讶publicSystem.Collections.Generic.IEnumeratorGetEnumerator(){return_array.GetEnumerator();}没用。数组不在.NET中实现IEnumerator的原因是什么?有什么解决方法吗?谢谢 最佳答案 数组确实实现了IEnumerable,但它是作为CLI对数组的特殊知识的一部分完成的。这就像它是一个显式实现一样工作(但不是:它是在运行时完成的)。许多工具不会显示此实现,这在Remarks中有