28
Digg
Stumbleupon
Technorati
Delicious

C#三种字符串拼接方法性能浅析

字符串拼接的方法主要包括以下三个:+,String.Format(),StringBuilder.Append()。 1)对于少量固定的字符串拼接,如string s= “a” + “b” + “c”,系统会优化成s= String.Concat(“a”,”b”,”c”),不会新建多个字符串。 如果写成string s=”a”; s +=”b”; s+=”c”;则会创建三个新的字符串。 2)String.Format的源代码:    public static String Format(              IFormatProvider provider, String format, params Object[] args) {             if (format == null || args == null)                throw new ArgumentNullException((format==null)?”format”:”args”);             StringBuilder sb = new StringBuilder(format.Length + args.Length * 8);             sb.AppendFormat(provider,format,args);             return sb.ToString();    } 可见,它和StringBuilder有着相似的效率,比用“+”的拼接方式高效,并且代码易于阅读。 string s= String.Format(“{0}{1}{2}”,”a”,”b”,”c”); 3)StringBuilder可以指定内存空间的容量,但可能需要进行数据类型转化。字符串较少时,可以使用String.Format()代替。 4)少量的字符串操作时,可以使用“+”或者String.Format();大量的字符串操作时,比如在循环体内,必须使用StringBuilder.Append()。  

Author: jianyun
20
Digg
Stumbleupon
Technorati
Delicious

文件名智能排序的规则与算法

在文件夹中,我们经常有类似s_1.txt、s_2.txt、s_10.txt、s_11.txt这样的命名方式,我们期望的排序方式是s_1.txt、s_2.txt、s_10.txt、s_11.txt(XP & Vista & Windows7是这种方式),然而,按照常规的字符串排序算法的到的结果是s_1.txt、s_10.txt、s_11.txt、s_2.txt(Windows 2000是这种方式)。 新的排序算法的规则是: 非数字部分按照字符串排序 数字部分按照大小排序 规则1的优先级高于规则2的优先级 在网上看到有人讨论怎么实现上面的智能排序效果,甚至自己写了一些算法,其实Windows就有API函数来实现文件名的智能排序规则。 StrCmpLogicalW /* Compares two Unicode strings. Digits in the strings are considered as numerical content rather than text. This test is not case sensitive. Syntax int StrCmpLogicalW(           LPCWSTR psz1,     LPCWSTR psz2 ); Parameters psz1 [in] A pointer to the first null-terminated string to be compared. psz2 [in] A pointer to [...]

Author: jianyun
05
Digg
Stumbleupon
Technorati
Delicious

从AD中根据group name获取group下所有的用户信息

下面的方法是可以用来在获取AD group下所有的member的用户信息的一个例子。   ?View Code CSHARP1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 [...]

Author: jianyun
07
Digg
Stumbleupon
Technorati
Delicious

C#开发Android应用的利器——Mono for Android V1.0 发布

Mono for Android V1.0 正式发布啦! Mono for Android就是原先的MonoDroid,由于商标问题(名称中含有Droid),现在改名为Mono for Android。 Mono for Android提供了一个基于Android的Mono虚拟机,让开发者可以用C#开发Android应用程序。另外,Dalvik API已经被绑定至C#,你可以用C#方便地调用Android内置的很多类库。OpenTK类库也被移值过来,你可以在Windows, Linux与iPhone三个不同的平台上共享同样的OpenGL代码。 当前版本只支持C#语言,但理论上应该支持其他语言的编译器。通过针对Mono for Android的Visual Studio 2010 add-on,你可以在熟悉的VS2010开发环境中开发Android应用。 如果你是.NET程序员,如果你想开发移动应用程序,如果你不想学习和编写Java代码,如果你目前不看好Windows Phone 7,那就用Mono for Android吧!而且,如果哪天Windows Phone发达了,你想开发WP应用程序了,那你现在写的很多代码还可以用于WP应用开发!另外,如果你考虑用MonoTouch开发iPhone应用程序,那就更幸福了,为Android应用写的C#代码,也可以用于iPhone应用开发。一次写代码,却可以用于三大移动平台,世上难道还有比.NET程序员更幸福的程序员吗!.NET程序员们,欢呼吧! 但是欢呼的同时,我们也要面对现实,使用Mono for Android有一些限制。比如,不能使用C# 4.0的dynamic特性。另外,一些专门针对Android的类库(比如针对Android特有的硬件,针对由Android本地类库和TK实现的UI),在其他平台的.NET实现中可能得不到支持。这就意味着,如果Android应用与Windows Phone应用要共享代码,只能共享核心代码。Mono for Android提供的只是让你可以用C#代码编写Android应用,但是开发一个真正的Android应用,你还需要学习很多东西,比如:Activities, Intents,通过XML创建UI。 Mono for Android提供了一个可以免费下载的版本,但只能在模拟器中使用。要想在真实环境中使用,需要购买商业许可。专业版$399/年,企业版$999/年。   英文原文:Mono for Android V1.0 now shipping  

Author: jianyun