麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > .NET > 正文

.NET實用擴展方法詳解

2024-07-10 13:32:40
字體:
來源:轉載
供稿:網友

持續更新的.NET實用擴展方法,具體內容如下

1. 字符串轉換為可空數值類型(int, long, float...類似)

  /// <summary>  /// 將字符串轉換成32位整數,轉換失敗返回null  /// </summary>  /// <param name="str">轉換的字符串</param>  /// <returns>轉換之后的整數,或null</returns>  public static int? TryParseToInt32(this string str)  {    if (string.IsNullOrWhiteSpace(str))      return null;    var result = 0;    if (int.TryParse(str, out result))      return result;    else      return null;  }

2. 去除子字符串

  /// <summary>  /// 去除子字符串  /// </summary>  /// <param name="str">原字符串</param>  /// <param name="substring">要去除的字符串</param>  /// <returns>去除子字符串之后的結果</returns>  public static string DeSubstring(this string str, string substring)  {    if (string.IsNullOrEmpty(str) || string.IsNullOrEmpty(substring) || !str.Contains(substring))    {      return str;    }    return Regex.Replace(str, Regex.Escape(substring), string.Empty);  }  /// <summary>  /// 去除子字符串  /// </summary>  /// <param name="str">原字符串</param>  /// <param name="substrings">要去除的子字符串</param>  /// <returns>去除子字符串之后的結果</returns>  public static string DeSubstring(this string str, params string[] substrings)  {    if (string.IsNullOrEmpty(str))      return str;    if (substrings == null)      return str;    var newStr = str;    foreach (var item in substrings)    {      newStr = newStr.DeSubstring(item);    }    return newStr;  }

3. 獲取子序列

  /// <summary>  /// 獲取子序列  /// </summary>  /// <typeparam name="T">序列中元素類型</typeparam>  /// <param name="source">源數據</param>  /// <param name="startIndex">開始索引(返回時包括)</param>  /// <param name="endIndex">結束索引(返回時包括)</param>  /// <returns>子序列</returns>  public static IEnumerable<T> SubEnumerable<T>(this IEnumerable<T> source, int startIndex, int endIndex)  {    if (source == null)      yield return default(T);    var length = source.Count();    if (startIndex < 0 || endIndex < startIndex || startIndex >= length || endIndex >= length)      throw new ArgumentOutOfRangeException();    var index = -1;    foreach (var item in source)    {      index++;      if (index < startIndex)        continue;      if (index > endIndex)        yield break;      yield return item;    }  }

4. 通過指定鍵對序列去重, 不必實現IEqualityComparer接口

  /// <summary>  /// 通過對指定的值進行比較返回序列中的非重復元素。  /// </summary>  /// <typeparam name="T">序列中元素類型</typeparam>  /// <typeparam name="TResult">指定的比較屬性類型</typeparam>  /// <param name="source">源數據</param>  /// <param name="selector">應用于每個元素的轉換函數</param>  /// <returns>一個包含源序列中的按指定屬性非重復元素</returns>  public static IEnumerable<T> Distinct<T, TResult>(this IEnumerable<T> source, Func<T, TResult> selector)  {    if (source == null)      throw new ArgumentNullException(nameof(source));    if (selector == null)      throw new ArgumentNullException(nameof(selector));    var set = new HashSet<TResult>();    foreach (var item in source)    {      var result = selector(item);      if (set.Add(result))      {        yield return item;      }    }  }

5. 獲取序列中重復的元素序列, 原理和去重類似

  /// <summary>  /// 通過對指定的值進行比較返回序列中重復的元素  /// </summary>  /// <typeparam name="T">序列中的數據類型</typeparam>  /// <typeparam name="TResult">指定的比較屬性類型</typeparam>  /// <param name="source">源數據</param>  /// <param name="selector">應用于每個元素的轉換函數</param>  /// <returns>一個包含源序列中的按指定元素的重復元素</returns>  public static IEnumerable<T> Identical<T>(this IEnumerable<T> source)  {    if (source == null)      throw new ArgumentNullException(nameof(source));    var setT = new HashSet<T>();    foreach (var item in source)    {      if (!setT.Add(item))      {        yield return item;      }    }  }  /// <summary>  /// 通過對指定的值進行比較返回序列中重復的元素  /// </summary>  /// <typeparam name="T">序列中的數據類型</typeparam>  /// <typeparam name="TResult">指定的比較屬性類型</typeparam>  /// <param name="source">源數據</param>  /// <param name="selector">應用于每個元素的轉換函數</param>  /// <returns>一個包含源序列中的按指定元素的重復元素</returns>  public static IEnumerable<T> Identical<T, TResult>(this IEnumerable<T> source, Func<T, TResult> selector)  {    if (source == null)      throw new ArgumentNullException(nameof(source));    if (selector == null)      throw new ArgumentNullException(nameof(selector));    var setTResult = new HashSet<TResult>();    foreach (var item in source)    {      var result = selector(item);      if (!setTResult.Add(result))      {        yield return item;      }    }  }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到ASP.NET教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产精品免费一区二区 | 亚洲精品在线观看免费 | h视频免费在线观看 | 91久久国产综合精品女同国语 | 日韩在线欧美在线 | chinese hd xxxx tube | 性日本xxx | 全黄毛片 | 亚洲午夜一区二区三区 | 香蕉成人在线视频 | 中文字幕在线观看视频一区 | 国产亚洲精品成人a | 午夜国产在线 | 最新在线中文字幕 | 在线a毛片免费视频观看 | 91精品国产91久久久 | 亚洲啊v在线观看 | 成年人小视频在线观看 | 98国内自拍在线视频 | 久久久久av69精品 | 国产精品免费一区二区三区都可以 | 蜜桃91麻豆 | 欧美中文字幕一区二区三区亚洲 | 精品成人国产在线观看男人呻吟 | 高潮激情aaaaa免费看 | 久久久日韩精品一区二区三区 | 亚洲第一视频 | 亚洲第一成av人网站懂色 | 免费h片| 毛片免费视频网站 | 久久亚洲精品久久国产一区二区 | 色七七网站 | 精品一区二区三区欧美 | 91毛片网站 | 韩国精品一区二区三区四区五区 | 国产噜噜噜噜久久久久久久久 | 偿还的影视高清在线观看 | 天堂福利电影 | 久久综合久久美利坚合众国 | 中文字幕国产亚洲 | 国产精品av久久久久久久久久 |