温故知新——CSharp
关于
平时在工作学习中查找到的关于C#的小技巧,持续记录,温故知新。
技巧
- 使用
Parallel.For()
或者Parallel.Foreach()
提高循环的效率; - 使用
PLINQ.AsParallel()
的语法来提高LINQ的运行效率,其中AsParallel()
不表示一定会使用平行运算,其执行的数目会由1、2、4、8等增加,另外AsParallel()
之后可以接上另一个方法WithExecutionMode(ParallelExecutionMode.ForceParallelism)
,表示要强制使用平行运算; - 在单元测试中,获取当前的执行路径方法:
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
; - 当重新丢出
Exception
时,请使用throw
,而非throw ex
用以保留call stack
信息; - 避免
catch
错误,却不做任何事情; - 在判断
string
是否为空白时,避免使用与String.Empty
或" "比较,改用String.Length = 0
,效率更高; - 表示空字串时,避免使用" "改用使用
string.Empty
,效能较佳; - 动态字串串接时(无法于当下串接所有内容),避免使用"+",改用
StringBuilder
,效能较佳; -
string
忽略大小写比较时,避免使用ToLower()
,改用string.Compare()
,效能较佳,用法如下:string.Compare(targetStringA,"target string B",true) == 0
; - 静态字串串接时,利用”@”来输入多行文字及避免跳脱字元;
- 使用
string.Join()
拼接字符串数组得到单个字符串; - C#哈希表
HashTable
和Dictionary
比较,添加数据时Hashtable
快,频繁调用数据时Dictionary
快。Dictionary<K,V>
是泛型的,当K或V是值类型时,其速度远远超过Hashtable
。
后记
小伙伴们发现不对的地方及时指出,一起写出更好地C#代码。