最新评论

共4页: 1 2 3 4 下一页 
丘比特 2012-04-27 22:07
@MyDreams 呃...我这个只是笔记...结合下官方的API在看这文章应该会好懂些... 时隔2年..我自己都看不懂了..
wxf4150 2012-04-26 12:03
我来评了。 不错。 大多数人都 只看不评的。 没有发文章或是 留言的习惯。
郁a闷 2012-03-09 02:21
目前我正需要整合dnt论坛,具体需求是这样: 我的域名是泛解析的,假设是*.xxx.com(因为需要用到未知个数的二级域名,作用是会员的二级域名),现在想将dnt论坛和这些会员的二级域名上面的页面整合起来,论坛的域名是bbs.xxx.com。。请问博主,这个应该如何整合?DiscuzToolkit.zip也用了,可是有出错。。。论坛版本是3.9的,不知道这个DiscuzToolkit.zip合用否?博主能出一个教程吗?谢了。。。
丘比特 2011-05-05 10:16
无论在哪种语言与平台中,字符串都是我们最常使用的对象。 .Net与C#语言把字符串在表面上做的相当易用,但是只有在深入理解字符串在CLR的驻留形式后才能更加合理高效的使用字符串对象。 1 字符串的驻留形式 先看一个sample [code=csharp] static void Main(string[] args) { //.Net Framework中将一个应用程序的string都存放在一个Hashtable中 //key就是值 value是堆地址 string str1 = "hello"; //申请一块堆内存 把地址放在StringHashtable的key为hello的元素中 string str2 = "hello";//由于上一句已经创建了key为hello的元素 所以不使用newobj 申请新的堆内存 string str3 = "h" + "e" + "l" + "l" + "o"; //编译成MSIL语言时 已经与string str3 = "hello"一样了 string str4 = new string(new char[] { 'h', 'e', 'l', 'l', 'o' }); //自己显示进行new string str5 = "hello2"; //申请一块堆内存 key为hello2 Console.WriteLine(object.ReferenceEquals(str1, str2).ToString()); //True 引用同一块堆内存 Console.WriteLine(object.ReferenceEquals(str1, str3).ToString()); //True 也是引用同一块堆内存 Console.WriteLine(object.ReferenceEquals(str1, str4).ToString()); //False 引用了不同的堆内存 str2 = "hello2"; // 每次对字符串对象赋值时 都先从StringHashcode中检索是否有重复的key 检索到了str5 Console.WriteLine(object.ReferenceEquals(str1, str2).ToString()); //False str2与str1已经不引用同一个堆 Console.WriteLine(object.ReferenceEquals(str2, str5).ToString()); //True 变成与str5引用同一个堆内存 str1 = Console.ReadLine(); str2 = Console.ReadLine(); Console.WriteLine(object.ReferenceEquals(str1, str2).ToString()); Console.WriteLine(object.ReferenceEquals(str1, string.Empty).ToString()); Console.ReadLine(); } [/code] 开始时候的str1,str2,str3其实在翻译为MSIL后,都是相同的string str = "hello"; 然后该应用程序会有一个字符串池,应该是一个hashtable,保存着所有的字符串,后面的str2="hello2",使str2与str5指向了同一块内存。 最后我又试验了一下字符串池的机制是否在运行时也是启作用的,发现字符串池仅仅是编译时,优化了应用程序的大小,应用程序启动时,优化了内存占用大小,而运行时没有这个机制,每次对一个string的赋值都会导致在堆内存分配一块新的空间 转自 [url]http://www.cnblogs.com/coderlee/archive/2008/01/02/1023316.html[/url] 这哥们空间用了跳转。不能直接打开。
丘比特 2011-05-05 10:08
@幻灭 好的,我也研究下,呵呵!
幻灭 2011-05-05 09:53
关于String写的还不够详细啊,再加个这个就完善点了 [code=csharp] String str1 = "abcde"; String tmp = "abcd"; String str2 = tmp + "e"; Console.WriteLine(String.ReferenceEquals(str1, str2)); str2 = String.Intern(str2); Console.WriteLine(String.ReferenceEquals(str1, str2)); [/code] 不过关于以前这个好像有不少人写了,过段时间重新提下还是不错的
jiaxingseng 2011-05-05 09:23
我印象中ReferenceEquals是否返回true跟.net版本有关系吧?仿佛4才返回true的
新的开始 2011-05-05 00:50
[quote]丘比特: @新的开始 这会儿还在编码?兼职还是工作啊?[/quote] 没精力兼职啊~~ 白天事情太杂,晚上可以静下点心来弄弄,可惜上眼皮与下眼皮的战斗已经越来越激烈了~~
丘比特 2011-05-05 00:43
@新的开始 这会儿还在编码?兼职还是工作啊?
新的开始 2011-05-05 00:29
@Madivh 以前也很少逛,现在是天天逛,看一些非技术类文章也是很不错的! 正在debug中~~ 不过也撑不了多久了~~
Madivh 2011-05-05 00:24
@新的开始 呃。。说实话我其实很少逛园子,有需要的时候会在园子里搜,我去瞅瞅 我在安装Wow..马上也倒下
新的开始 2011-05-05 00:21
@丘比特 都12点多了,除了已经倒下的,基本都是在干活的~~ 如果想文章多评论,应该写些非技术类的,你看看最近园子里那些评论暴多的文章就知道了...
丘比特 2011-05-05 00:14
@新的开始 我想问下。。有没有再无聊点的? 快喊他过来。。这文章缺点评。。。谢了
新的开始 2011-05-05 00:10
@丘比特 以后发文之前还是先搜索下,看看别人是否已经写过类似的,不然很容易被人踢馆的~~ 所以我现在就是秉持 看>评论>写 的原则。
丘比特 2011-05-05 00:00
@新的开始 啊~~我是真没注意过。。真不好意思让您贱笑啦。 呵呵,开个玩笑,还望以后多多指点
新的开始 2011-05-04 23:56
标题弄这么长,看着真蛋疼~~ PS:楼主你已经OUT了!在园子里我已经看过N篇文章和N+1条评论中说过这个字符串缓存的特性了~~
丘比特 2011-05-04 23:51
@我就是砖家 是的确实不同了 string b = new String(new char[]{'a','b', 'e', 'q', 'w', 'e', 'c'}); 调用new String(char [])方法 字符串变量将引用此字符数组的地址。 呵呵多谢指点
我就是砖家 2011-05-04 23:40
string b = "abeqwe" + "c"; 编译时就会被优化的,和"abeqwec"没任何区别。 可以试试b = new String('a','b','e','q','w','e','c');
丘比特 2011-05-04 23:31
@安布雷拉 IL嘛 内行看门道,外行看热闹,其实我也是一知半解 啊哈
共4页: 1 2 3 4 下一页 
E-Zone