• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#探秘系列(四)——GetHashCode,ExpandoObject

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

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c#gethashcode,c#中gethashcode,gethashcode,大白话系列c#,c#等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

这篇继续分享下GetHashCode和ExpandoObject这两个比较好玩的方法。

一:GetHashCode

  从MSDN上可以看到的解释是:用作特定类型的哈希函数,也就是说任何对象的实例都会有一个int32类型的HashCode,并且存放在FCL中的HashCollection中,废话不说,看个例子:


从图中可以看到,两个类实例的hashcode不同,说明二者不是同一个引用,也就有了不同的hashcode,利用这个特性,我们是不是可以生成一些随机数字呢?

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

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

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

            Console.Read();
        }
</div>




我们知道Random都是伪随机的,所以会出现一连串的数字重复,那么我真的想要随机数怎么办呢?这时候就可以用HashCode试试了

2:for循环中的hashcode

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

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

            Console.Read();
        }
</div>

不过我们看到,我们不断的向托管推上仍垃圾,所以对GC还是有一定的性能开销的。

二:ExpandoObject

     我们知道php,asp,js都是解释性的语言,免去了编译的烦恼,我去年做过半年的php,然后回归C#,然后就会对C#的编译特别的不爽,有时候一个solution一百多个dll,编译都要10多分钟,每周的发布日都会通过自动化工具发布到生产环境,然而在到生产环境下前的各个环境中,都需要重新编译,导致很多时间都耗费在编译上面去了,不过在C#4.0之后,我们通过动态的特性,也能够做到把C#当作js来写。比如这里的ExpandoObject类,我们可以通过后期绑定来向ExpandoObject动态的追加一些属性和方法,非常有意思。不过这里要注意的是一但开了dynamic,编译器也就不认这些代码了,也就实现了免编译的功能。

            obj.Age = 20;

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

            obj.Call();

            Console.Read();
        }
</div>


</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

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

相关文章

  • 2017-05-28WinForm遍历窗体所有子控件的方法
  • 2017-05-28C#利用Windows自带gdi32.dll实现抓取屏幕功能实例
  • 2017-05-28C#数组学习相关资料整理
  • 2017-05-28C#图像处理之木刻效果实现方法
  • 2017-05-28C# 运算符 ?、??、?: 各种问号的用法和说明
  • 2017-05-28C#正则表达式Regex类的常用匹配
  • 2017-05-28C#使用WebClient登录网站并抓取登录后的网页信息实现方法
  • 2017-05-28C#(.net)水印图片的生成完整实例
  • 2017-05-28c#读取图像保存到数据库中(数据库保存图片)
  • 2017-05-28C#中JavaScriptSerializer帮助类用法实例

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#实现获取不同对象中名称相同属性的方法
    • C#中GraphicsPath的Flatten方法用法实例
    • C# Redis学习系列(一)Redis下载安装使用
    • c# 自定义泛型链表类的详解
    • C#实现在网页中根据url截图并输出到网页的方法
    • DevExpress GridControl实现根据RowIndex和VisibleColumnsIndex来获取单元格值
    • C#通过链表实现队列的方法
    • 结合Visual C#开发环境讲解C#中事件的订阅和取消订阅
    • C# Ini文件操作实例
    • C#实现属于自己的QQ截图工具

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有