首页 新闻 会员 周边 捐助

关于拼接字符串无效的问题

0
[已解决问题] 解决于 2010-08-12 14:34

StringBuilder s = new StringBuilder();

this.ddlGoodsClassName.SelectedValue = "3";

s=s .Append("0");
s=s.Append(this.ddlGoodsClassName.SelectedValue.ToString().Trim()); 
s=s.Append("000001");
goods.GoodsId =Convert.ToString(s);

执行后显示的依然是3,而我要的效果是03000001,如何解决?

GoldLemon的主页 GoldLemon | 初学一级 | 园豆:180
提问于:2010-07-29 16:33
< >
分享
最佳答案
0



StringBuilder s = new StringBuilder();

this.ddlGoodsClassName.SelectedValue = "3";

s=s .Append("0");
s=s.Append(this.ddlGoodsClassName.SelectedValue.ToString().Trim()); 
s=s.Append("000001");
goods.GoodsId =Convert.ToString(s);

 

改成


            //创建 StringBuilder 对象时,最好能给够初始长度。
            //虽然 StringBuilder 会在长度不够时,自动增加数组的长度,但是是翻倍增加,
            //往往很多时候我们是不需要翻倍的长度的, 这样浪费资源。
            StringBuilder s = new StringBuilder(64);

            this.ddlGoodsClassName.SelectedValue = "3";

            s.Append("0");
            s.Append(this.ddlGoodsClassName.SelectedValue.ToString().Trim());
            s.Append("3");
           s.Append("000001");
           goods.GoodsId = s.ToString();
要注意这句话:
  goods.GoodsId = s.ToString(); 这里最好不要 通过 Convert.ToString(s); 来转换成字符串。
这样会多了个类型强制转换过程。  因为字符串 实际上就是一个连续的字符数组
直接调用 s.ToString();就不用做任何转换操作了,直接返回这个数组。这样就节约了资源。
而Convert.ToString(s);则要做更多的操作:
先判断 是否实现 IConvertible 来确定是否可以做转换操作。还要 检测 IFormattable 看是否可以格式化。
还要判断是否等于 null ,等于 null 则返回 string.Empty;最好也调用 s.ToString();
可以看出。直接调用s.ToString();效率要高不少。

HUHU慈悲 | 大侠五级 |园豆:9973 | 2010-08-12 08:47
其他回答(2)
0

StringBuilder s = new StringBuilder();//对的

this.ddlGoodsClassName.SelectedValue = "3";

s=s .Append("0");//错的,而直接:s .Append("0")
s=s.Append(this.ddlGoodsClassName.SelectedValue.ToString().Trim()); //和上面一样!不用等于!
s=s.Append("000001");//同上
goods.GoodsId =Convert.ToString(s);//goods.GoodsId = s.ToString()

Astar | 园豆:40805 (高人七级) | 2010-07-29 16:37
刚试过了还是不行,是什么问题呢?
支持(0) 反对(0) GoldLemon | 园豆:180 (初学一级) | 2010-07-29 16:39
@新人jin:确定你his.ddlGoodsClassName.SelectedValue没有问题,我这试了没有问题。StringBuilder s = new StringBuilder(); string a = "3"; s.Append("0"); s.Append(a); s.Append("000001"); Response.Write(s.ToString());
支持(0) 反对(0) Astar | 园豆:40805 (高人七级) | 2010-07-29 16:44
没问题啊,我直接s.Append("0"); s.Append("3"); s.Append("000001"); goods.GoodsId =Convert.ToString(s); 也不行
支持(0) 反对(0) GoldLemon | 园豆:180 (初学一级) | 2010-07-29 17:43
@新人jin:Convert.ToString(s); 改成s.tostring();
支持(0) 反对(0) Astar | 园豆:40805 (高人七级) | 2010-07-29 17:46
0

StringBuilder s = new StringBuilder();

this.ddlGoodsClassName.SelectedValue = "3";

s .Append("0");
s.Append(this.ddlGoodsClassName.SelectedValue.ToString().Trim()); 
s.Append("000001");
goods.GoodsId =Convert.ToString(s);

这方式就可以了,因为StringBuilder会将字符串连接起来,在前一个字符串的后边追加,所以不用写在为s= s.Append("")之类的.

平凡网客 | 园豆:9 (初学一级) | 2010-07-30 16:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册