C产品在市场上有哪些独特优势?

2026-04-28 03:501阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计343个文字,预计阅读时间需要2分钟。

C产品在市场上有哪些独特优势?

当然,以下是简化后的内容:

无法直接将WhereEnumerableIterator转换为IEnumerable:IX public interfaceIX public class X1 : IXIX public class X2 : IXpublic void Method1(IEnumerable arg){ var filtered=arg.Where(e=> e.GetType()==typeof(X2)); // filtered will be ...}

显然,无法转换WhereEnumerableIterator< IX>到IEnumerable< X:IX>

C产品在市场上有哪些独特优势?

public interface IX public class X1 : IX public class X2 : IX public void Method1(IEnumerable<IX> arg) { var filtered = arg.Where(e => e.GetType() == typeof(X2)); // filtered will be of type WhereEnumerableIterator<IX> Method2(filtered as IEnumerable<X2>); } public void Method2(IEnumerable<X2> arg) { // at runtime arg will be null }

显然CLR无法转换WhereEnumerableIterator< IX>到IEnumerable< X2>并设置结果null(有点神秘).

将过滤器应用于IEnumerable< IX>似乎是合乎逻辑的.并且结果表示为IEnumerable< X:IX> (实际上没有枚举).

但是怎么做呢?

它发生了,因为过滤的是IEnumerable< IX> (即使它在过滤后仅包含X2项)并且不能直接转换为IEnumerable< X2>.
你可以这样做并投射你的IEnumerable:

var filtered = arg.Where(e => e.GetType() == typeof(X2)).Cast<X2>(); // filtered will be of type WhereEnumerableIterator<X2> now Method2(filtered);

但是你可以使用Enumerable.OfType根据元素的类型过滤IEnumerable:

public void Method1(IEnumerable<IX> arg) { var filtered = arg.OfType<X2>(); Method2(filtered); } public void Method2(IEnumerable<X2> arg) { }

本文共计343个文字,预计阅读时间需要2分钟。

C产品在市场上有哪些独特优势?

当然,以下是简化后的内容:

无法直接将WhereEnumerableIterator转换为IEnumerable:IX public interfaceIX public class X1 : IXIX public class X2 : IXpublic void Method1(IEnumerable arg){ var filtered=arg.Where(e=> e.GetType()==typeof(X2)); // filtered will be ...}

显然,无法转换WhereEnumerableIterator< IX>到IEnumerable< X:IX>

C产品在市场上有哪些独特优势?

public interface IX public class X1 : IX public class X2 : IX public void Method1(IEnumerable<IX> arg) { var filtered = arg.Where(e => e.GetType() == typeof(X2)); // filtered will be of type WhereEnumerableIterator<IX> Method2(filtered as IEnumerable<X2>); } public void Method2(IEnumerable<X2> arg) { // at runtime arg will be null }

显然CLR无法转换WhereEnumerableIterator< IX>到IEnumerable< X2>并设置结果null(有点神秘).

将过滤器应用于IEnumerable< IX>似乎是合乎逻辑的.并且结果表示为IEnumerable< X:IX> (实际上没有枚举).

但是怎么做呢?

它发生了,因为过滤的是IEnumerable< IX> (即使它在过滤后仅包含X2项)并且不能直接转换为IEnumerable< X2>.
你可以这样做并投射你的IEnumerable:

var filtered = arg.Where(e => e.GetType() == typeof(X2)).Cast<X2>(); // filtered will be of type WhereEnumerableIterator<X2> now Method2(filtered);

但是你可以使用Enumerable.OfType根据元素的类型过滤IEnumerable:

public void Method1(IEnumerable<IX> arg) { var filtered = arg.OfType<X2>(); Method2(filtered); } public void Method2(IEnumerable<X2> arg) { }