国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C# 的OrderBy()函數的排序問題

2019-11-17 02:24:03
字體:
來源:轉載
供稿:網友

C# 的OrderBy()函數的排序問題

昨天在客戶現場遇到一個很奇葩的問題,猜下下面代碼的排序輸出是什么:

static void Main(){    List<string> strs = new List<string>(){"11", "12", "1:"};    foreach(string str in strs.OrderBy(n => n))        Console.writeLine(str);}

是這個么:

11121:

No, No, No。實際輸出了這個:

1:1112

為什么?冒號的ASCII碼值不是在0~9的后面么?我也沒搞懂為什么C#的默認Sorter是按照這個順序排序的。好在OrderBy()函數支持自定義Sorter,像下面一樣修改下就行了。

static void Main(){    OrdinalComparer comp = new OrdinalComparer();    List<string> strs = new List<string>(){"11", "12", "1:"};    foreach(string str in strs.OrderBy(n => n, comp))        Console.writeLine(str);}public class OrdinalComparer: System.Collections.Generic.IComparer<String>{    public int Compare(String x, String y)    {        return string.CompareOrdinal(x, y);    }  }

不過還是不知道為什么OrderBy的默認排序要設置成這樣,Python2.3的默認排序就是按ASCII碼排的。這導致我和別人寫了同一個算法,結果python和C#排序輸出結果不一致。哪位熟悉CLR的博友可以告訴我原因么?


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 兴业县| 方城县| 湛江市| 四平市| 乌什县| 盱眙县| 铜山县| 札达县| 建瓯市| 五指山市| 邢台市| 高唐县| 邓州市| 桐庐县| 陈巴尔虎旗| 定南县| 泗水县| 平遥县| 祥云县| 金乡县| 金川县| 淳安县| 芦溪县| 贡觉县| 方山县| 登封市| 永定县| 宁明县| 泸西县| 客服| 吉安市| 长子县| 鸡泽县| 益阳市| 永泰县| 广西| 邻水| 当雄县| 鹤山市| 阳新县| 嘉荫县|