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

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

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

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

一:GetHashCode

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


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

1:在for循環(huán)中用random生成。

復(fù)制代碼 代碼如下:

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都是偽隨機(jī)的,所以會(huì)出現(xiàn)一連串的數(shù)字重復(fù),那么我真的想要隨機(jī)數(shù)怎么辦呢?這時(shí)候就可以用HashCode試試了

2:for循環(huán)中的hashcode

復(fù)制代碼 代碼如下:

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();
        }

不過(guò)我們看到,我們不斷的向托管推上仍垃圾,所以對(duì)GC還是有一定的性能開(kāi)銷的。

二:ExpandoObject

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

復(fù)制代碼 代碼如下:

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();
        }



相關(guān)文章

  • C#判斷某程序是否運(yùn)行的方法

    C#判斷某程序是否運(yùn)行的方法

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

    C#在foreach遍歷刪除集合中元素的三種實(shí)現(xiàn)方法

    這篇文章主要給大家總結(jié)介紹了關(guān)于C#在foreach遍歷刪除集合中元素的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • C#實(shí)現(xiàn)簡(jiǎn)單串口通訊實(shí)例

    C#實(shí)現(xiàn)簡(jiǎn)單串口通訊實(shí)例

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

    基于C#中XmlWriter寫(xiě)入Xml的深入分析

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

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

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

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

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

    C#計(jì)算矩陣的逆矩陣方法實(shí)例分析

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

    C#難點(diǎn)逐個(gè)擊破(3):params數(shù)組參數(shù)

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

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

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

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

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

最新評(píng)論