欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2014年05月14日 09:25:11   作者:  
這篇繼續(xù)分享下GetHashCode和ExpandoObject這兩個比較好玩的方法。

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

一:GetHashCode

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


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

1:在for循環(huán)中用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循環(huán)中的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多分鐘,每周的發(fā)布日都會通過自動化工具發(fā)布到生產環(huán)境,然而在到生產環(huán)境下前的各個環(huán)境中,都需要重新編譯,導致很多時間都耗費在編譯上面去了,不過在C#4.0之后,我們通過動態(tài)的特性,也能夠做到把C#當作js來寫。比如這里的ExpandoObject類,我們可以通過后期綁定來向ExpandoObject動態(tài)的追加一些屬性和方法,非常有意思。不過這里要注意的是一但開了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();
        }



相關文章

  • C#判斷某程序是否運行的方法

    C#判斷某程序是否運行的方法

    這篇文章主要介紹了C#判斷某程序是否運行的方法,代碼結構簡單功能實用,需要的朋友可以參考下
    2014-09-09
  • C#在foreach遍歷刪除集合中元素的三種實現方法

    C#在foreach遍歷刪除集合中元素的三種實現方法

    這篇文章主要給大家總結介紹了關于C#在foreach遍歷刪除集合中元素的實現方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用C#具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-12-12
  • C#實現簡單串口通訊實例

    C#實現簡單串口通訊實例

    這篇文章主要為大家詳細介紹了C#實現簡單串口通訊的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 基于C#中XmlWriter寫入Xml的深入分析

    基于C#中XmlWriter寫入Xml的深入分析

    本篇文章是對C#中XmlWriter寫入Xml進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • 深入解析c#中枚舉類型的定義與使用

    深入解析c#中枚舉類型的定義與使用

    以下是對c#中枚舉類型的定義與使用進行了詳細的分析介紹,需要的朋友可以過來參考下
    2013-08-08
  • C#中char和string的入門使用教程

    C#中char和string的入門使用教程

    這篇文章主要給大家介紹了關于C#中char和string的入門使用教程,文中通過示例代碼以及圖文介紹的非常詳細,對大家學習或者使用C#具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2020-07-07
  • C#計算矩陣的逆矩陣方法實例分析

    C#計算矩陣的逆矩陣方法實例分析

    這篇文章主要介紹了C#計算矩陣的逆矩陣方法,較為詳細的分析了逆矩陣的計算原理與相關的C#實現技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • C#難點逐個擊破(3):params數組參數

    C#難點逐個擊破(3):params數組參數

    注意,這里的paras全稱是array parameter,也就是數組參數。 paras類型參數主要用于在對數組長度未知(可變)的情況下進行函數聲明。
    2010-02-02
  • C#中l(wèi)ist用法實例

    C#中l(wèi)ist用法實例

    這篇文章主要介紹了C#中l(wèi)ist用法,結合實例形式分析了C#中l(wèi)ist排序、運算、轉換等常見操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • 如何在C#中使用只讀的 Collections

    如何在C#中使用只讀的 Collections

    這篇文章主要介紹了如何在C#中使用只讀的 Collections,幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下
    2021-04-04

最新評論