• .Net using,string.Empty初探


    前两天够哦年公司培训,讲了编码优化。现在初步总结下:(有些不大确定的就不讲了)

    1. 多次字符串拼接(特别是循环内),宜用stringBuilder.Append()方法,少用字符串+,至于string.Format()更费资源,少用。当然,如果字符串拼接量不大,3次以内,那也随便吧,为了美观string.Format()也可以。
    2. string.Empty的本质是"",reflector反编译string.Empty  结果:public static readonly string Empty = "";    所以string.Empty与""可以认为相同。
    3. Equals()与==的却别。   “JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地 址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了”。所以,对于int等值类型与string等,Equals()与==没区别。对于引用类型,尽量用Equals(),特别是在自己实现了Equals()时。
    4. using()的本质是try{}, finally{},编译器会在finally{}中写Close(),Dispose()等释放资源。如下代码:
      1.   
        string s = string.Empty;
        using(StreamReader sr =new StreamReader(@"C:\a.txt"))
        {    
                  s = sr.ReadToEnd(); 
        }
        Console.WriteLine(s);
      2. 反编译IL结果:
      3. 所以在using{}中不必再写Close(),Dispose().using{}类似语法糖,是一种代码的混合体。
      4. 另外提一笔,在try{  return XX;} catch{ return XX;}finally{}中进行return会出现奇怪的执行顺序,不一定在try{}中返回,可能得执行finally{}。所以建议统一在finally{}之后再return结束,比较安全、清晰。
  • 相关阅读:
    文件操作
    集合和深浅copy #
    货郎担问题TSP(dp解法)
    luoguP3413 SAC#1
    luoguP3413 SAC#1
    poj1681 Painter's Problem(gauss+dfs判定)
    日常(身怀绝技的大家)
    poj1830 开关问题(gauss)
    poj1830 开关问题(gauss)
    poj1222 EXTENDED LIGHTS OUT(gauss)
  • 原文地址:https://www.cnblogs.com/nlh774/p/4152013.html
Copyright © 2020-2023  润新知