【问题标题】:Any() on String字符串上的 Any()
【发布时间】:2020-09-17 15:32:33
【问题描述】:

我不明白引擎盖下发生了什么。 我有一个简单的字符串:

 var aux = "Hello";

如果我跑步:

aux.Any();

它返回 True 。执行的 Any() 在 System.Core dll 中:

在后台是否有强制转换,将字符串转换为可枚举的字符并 Any() 验证列表是否为空或...?

提前致谢!

【问题讨论】:

  • 基本上:是的。
  • 在字符串被转换为字符的可枚举的情况下是否有强制转换字符串字符的可枚举:它实现@ 987654326@.
  • 查看 msdn IEnumerable 示例:docs.microsoft.com/en-us/dotnet/api/…
  • @Alejandro str.Any(char.IsUpper) 让你觉得奇怪吗?如果不是,为什么str.Any()
  • 即使字符串是IEnumerable<char>,也有更好的方法来检查字符串是否为空——只需检查它的长度,或者调用string.IsNullOrEmpty,甚至调用string.IsNullOrWhiteSpace

标签: c# linq ienumerable


【解决方案1】:

String的定义以

开头
public sealed class String : IEnumerable<char>, IEnumerable, ICloneable, IComparable, IComparable<string?>, IConvertible, IEquatable<string>
{ ...

【讨论】:

    【解决方案2】:

    String 实现接口IEnumerableIEnumerable&lt;Char&gt;。和

    您可以在 C# 中为 ... 任何支持 IEnumerable 或通用 IEnumerable 接口的对象集合编写 LINQ 查询。

    (来自this article

    之所以这样工作,是因为 LINQ 只是这些接口的 extension methods

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多