小记 字符串内插($)与String.Format 编译后效果一样

14 篇文章 2 订阅
14 篇文章 0 订阅

注;小记并不是讨论字符串连接性能的。


最近在想,字符串内插($)和String.Format 到底哪一种效率更高,于是,有了这个小记。

Module Module1

    Sub Main()

        Dim baseUrl = ""
        Dim currentPage = 3

        Dim pageUrl = $"{baseUrl}&s={(currentPage * 20).ToString}"
        Console.WriteLine(pageUrl)

        'Dim pageUrl3 = String.Format("{0}&s={1}", baseUrl, (currentPage * 20).ToString)
        'Console.WriteLine(pageUrl3)

        Console.ReadKey()
    End Sub

End Module

上面这段代码,就是分别测试字符串内插($)和String.Format的,通过ILDASM可以看到,其实,两种方式编译之后的代码是一样的。

下面是ILDASM看到的字符串内插的代码,String.Format一样的,所以就不贴了。


总结;

1.表现形式上:

字符串内插是String.Format之后才有的,个人比较喜欢字符串内插,看起来比较直观,String.Format的话,如果参数很多,粗心的时候容易搞乱(也有可能是因为这个,才有的字符串内插,猜测偷笑)。

2.效率上:

两段代码都编译成一样的,所以就没有啥可比性了。

不过,感兴趣的朋友,可以去看下String.Format的实现,它内部是调用的FormatHelper,而FormatHelper是用StringBuilderCache来实现的。

StringBuilderCache又是为了弥补New StringBuilde以及StringBuilder.ToString才有的。

这个小记不是讨论字符串连接性能,对字符串连接性能感兴趣的可以看我另外一篇转载的文章(.NET程序的性能要领和优化建议),里面有谈到StringBuilderCache(StringBuilder缓存技术)。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闪星2

Time is money

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值