String与string的区别

JerryXia 发表于 , 阅读 (1,901)
问题:C#到底是什么时候传引用?什么时候传值?String传值还是传引用string和String有什么区别?String为什么是Immutable,怎么实现的?以下查询结果以及我的理解:1. C#到底是什么时候传引用?什么时候传值?传值的情况 :Struct、Enumeration、Numeric(Integral/Floating/decimal)、bool传引用的情况:class、Delegate、Interface当使用操作符"="以及函数传参数的时候:\ 传值的结果是把原对象复制... 阅读全文

各种URL生成方式的性能对比

JerryXia 发表于 , 阅读 (2,539)
我们列举了各种URL生成的方式,其中大致可以分为三类:直接拼接字符串(方法一及方法二)使用Route规则生成URL(方法三)使用Lambda表达式生成URL(方法四及方法五)我们可以轻易得知,这3种作法可维护性依次增加,而性能依次减少。不过,我们还是有一个疑问,这个性能究竟相差多少?它是否的确真的可以被忽略?为此,我们还是来进行一次性能对比吧。测试对象为了获得贴近实际的测试结果,我打算以我的博客首页作为测试对象。您可以发现,这个页面上的链接非常多,我把它分为三个部分:文章(Post)列表:... 阅读全文

正则表达式笔记

JerryXia 发表于 , 阅读 (2,620)
正则表达式是用来进行文本处理的技术,是语言无关的,在几乎所有语言中都有实现。一个正则表达式就是由普通字符以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。就像通配符“*.jpg”、“%ab%”,它是对字符串进行匹配的特殊字符串。元字符.:匹配任何单个字符。例如正则表达式“b.g”能匹配如下字符串:“big”、“bug”、“b g”,但是不匹配“buug”,“b..g”可以匹配“buu... 阅读全文

重谈字符串连接性能(下):分析优化

JerryXia 发表于 , 阅读 (2,181)
经过之间的性能比较,我们得知StringBuilder的性能并非时时最优,再经过实现分析,我们大致了解了StringBuilder的实现方式。虽然在此之前,大家也基本已经了解StringBuilder的实现原理,也有不少朋友指出了它性能缺陷的原因。不过“严谨”起见,寻找性能问题的方式应该是进行Profiling,然后找出性能关键再进行优化——而不是纯粹进行“阅读”这种静态分析方式。那么,假设我们还是使用原来的方式使用StringBuilder连接字符串:static void Main()... 阅读全文

重谈字符串连接性能(中):细节实现

JerryXia 发表于 , 阅读 (1,588)
根据上次的评测结果,我们了解了几种字符串拼接方式的性能高低。从中可以看出,广受追捧的StringBuilder性能似乎并不是最好的,String.Concat方法有时候有时候更适合使用。那么为什么String.Concat方法性能那么高,StringBuilder又为什么落败,而我们又有没有什么可以改进的做法呢?为此,我们不妨动用.NETReflector这一利器,看一下两者是怎么实现的。String.Concat为什么这么快String.Concat方法有多个重载,其中我们关注那个接受字... 阅读全文

重谈字符串连接性能(上):性能评测

JerryXia 发表于 , 阅读 (1,643)
看到这个标题是不是觉得很奇怪呢?字符串连接的性能,这个话题已经被谈了一遍又一遍,一次又一次,似乎已成定论,这又有什么好谈的呢?不过说来奇怪,根据我的实验结果在网上进行搜索,却找不到答案。因此,我现在和大家一起重新再作一次实验并观察结果。在文章最后我也会给出完整的代码,您可以自由地运行,修改,尝试,我们再一起进行交流。说起字符串拼接,最简单的方式便是使用最普通的连接操作“+”,以及StringBuilder了。为此,我们准备一些测试代码:private static readonly str... 阅读全文

.net获取所在目录

JerryXia 发表于 , 阅读 (1,916)
// 获取程序的基目录。 System.AppDomain.CurrentDomain.BaseDirectory // 获取模块的完整路径。 System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName // 获取和设置当前目录(该进程从中启动的目录)的完全限定目录。 System.Environment.CurrentDirectory // 获取应用程序的当前工作目录。 System.IO.D... 阅读全文