首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

记得编译器会自动联接字符串,求证一下,该怎么解决

2012-01-30 
记得编译器会自动联接字符串,求证一下1.stringstra +b +c +d 这样的字符串是否编译器会自动优化

记得编译器会自动联接字符串,求证一下
1.   string   str   =   "a "   +   "b "   +   "c "   +   "d ";

      这样的字符串是否编译器会自动优化为 "abcd "   ?

2.   string   s1   =   ....;
      string   s2   =   "a "   +   "b "   +   s1   +   "c "   +   "d ";

      这样的字符串又是否会自动联接为 "ab "   +   s1   +   "cd "   ?

主要是在SQL语句的书写中   为了提高可读性
      string   sql   =   "INSERT   INTO   tablename   (...)   VALUES   ( "   +  
                                field1   +   ", "   +                         //   int
                                " ' "   +   field2   +   " ', "   +           //   string
                                " ' "   +   field3   +   " ', "   +           //   string
                                "to_date( ' "   +   field4   +   " ',   'yyyy-mm-dd '),   "   +           //datetime
                                .......;

这样写是否编译器会自动优化   不至于影响性能吧   有否必要一定把   " ',   "   +   " ' "   写成 " ',   ' "
一条小语句   也用不着StringBuilder吧

[解决办法]
常量编译器会进行替换.

包括字符串.
[解决办法]
编译器会自动联接字符串是在编译时字符串常量(变量不行)会生成拼接后的字符串代替原来的表达式 所以 "a " + "b " + "c " + "d ";在IL代码里会变成 "abcd " 而 "a " + "b " + s1 + "c " + "d ";要最决于s1是否是常量 拼接SQL语句建议使用String.Format

热点排行