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

首頁 > 編程 > C# > 正文

C#探秘系列(四)――GetHashCode,ExpandoObject

2020-01-24 02:40:41
字體:
來源:轉載
供稿:網友

這篇繼續分享下GetHashCode和ExpandoObject這兩個比較好玩的方法。

一:GetHashCode

  從MSDN上可以看到的解釋是:用作特定類型的哈希函數,也就是說任何對象的實例都會有一個int32類型的HashCode,并且存放在FCL中的HashCollection中,廢話不說,看個例子:


從圖中可以看到,兩個類實例的hashcode不同,說明二者不是同一個引用,也就有了不同的hashcode,利用這個特性,我們是不是可以生成一些隨機數字呢?

1:在for循環中用random生成。

復制代碼 代碼如下:

static void Main(string[] args)
        {
            var list = new List<int>();

            for (int i = 0; i < byte.MaxValue; i++)
            {
                list.Add(new Random().Next(0, byte.MaxValue));
            }

            list.ForEach((i) =>
            {
                Console.WriteLine(i);
            });

            Console.Read();
        }





我們知道Random都是偽隨機的,所以會出現一連串的數字重復,那么我真的想要隨機數怎么辦呢?這時候就可以用HashCode試試了

2:for循環中的hashcode

復制代碼 代碼如下:

static void Main(string[] args)
        {
            var list = new List<int>();

            for (int i = 0; i < byte.MaxValue; i++)
            {
                list.Add(new Random().GetHashCode());
            }

            list.ForEach((i) =>
            {
                Console.WriteLine(i);
            });

            Console.Read();
        }

不過我們看到,我們不斷的向托管推上仍垃圾,所以對GC還是有一定的性能開銷的。

二:ExpandoObject

     我們知道php,asp,js都是解釋性的語言,免去了編譯的煩惱,我去年做過半年的php,然后回歸C#,然后就會對C#的編譯特別的不爽,有時候一個solution一百多個dll,編譯都要10多分鐘,每周的發布日都會通過自動化工具發布到生產環境,然而在到生產環境下前的各個環境中,都需要重新編譯,導致很多時間都耗費在編譯上面去了,不過在C#4.0之后,我們通過動態的特性,也能夠做到把C#當作js來寫。比如這里的ExpandoObject類,我們可以通過后期綁定來向ExpandoObject動態的追加一些屬性和方法,非常有意思。不過這里要注意的是一但開了dynamic,編譯器也就不認這些代碼了,也就實現了免編譯的功能。

復制代碼 代碼如下:

static void Main(string[] args)
        {
            dynamic obj = new System.Dynamic.ExpandoObject();

            obj.Name = "hxc";

            obj.Age = 20;

            obj.Call = new Action(() => { Console.WriteLine("call me!!!"); });

            obj.Call();

            Console.Read();
        }



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 涡阳县| 罗源县| 铁岭市| 视频| 株洲县| 防城港市| 山阳县| 同江市| 华阴市| 化隆| 保德县| 公主岭市| 海门市| 广德县| 通化县| 阿拉善右旗| 沾益县| 桓台县| 乌拉特前旗| 章丘市| 洛浦县| 玉山县| 上饶县| 临清市| 丹巴县| 丰镇市| 山东省| 瑞昌市| 武穴市| 永新县| 海宁市| 扬州市| 绥中县| 宝坻区| 通州区| 垫江县| 西藏| 海盐县| 连城县| 嘉兴市| 凤阳县|