【问题标题】:String declaration by character "A" + "B" vs "AB"字符“A”+“B”与“AB”的字符串声明
【发布时间】:2015-02-03 15:00:19
【问题描述】:

代替

string someString = "AB";

偶然发现

string someString = "A" + "B";

是否有任何技术解释使第二种方式更有利?

【问题讨论】:

  • 编译器会将两者编译成相同的IL,所以没有区别。
  • 没有区别,因为编译器可以对代码中的文字字符串做很多优化。我最好的猜测是这段代码用于读取类似string someString = "A" + integerValue + "B"; 的内容,随后被编辑以删除非文字部分,他们做了一个懒惰的工作。
  • 这个问题属于 SO 吗?具体问题出在哪里?
  • 请注意,这个主题已经在 SO 上讨论过几次 - 比如 stackoverflow.com/questions/5164436/…(比较有点不同,但也回答了这个问题)

标签: c# string


【解决方案1】:
var answer = "The only thing advantageous is readability, if you have large " +
             "amounts of text it can be useful to break up the text inside the " +
             "source code for better readability. The compiler will turn it " +
             "in to a single string at compile time anyway";

【讨论】:

  • @"verbatim strings" 更具可读性。它们可以毫不费力地包含换行符。
  • @HenkHolterman 但是如果您不希望呈现的字符串包含这些换行符,那么这是一个问题。
  • 嗯,这么长的字符串应该是某个地方的本地化资源,但现在我只是在拖钓 ;-)
  • 并不真正适用于我能想到的任何 C# 标准,但 Python 的主要代码标准之一 (Pep8) 喜欢你让你的代码行只小于一定长度(80我相信的字符)
  • @AdamHouldsworth 实际上这根本不是巨魔,而是很好的建议。如果这是一个真正的程序,我也会将该字符串作为资源。
猜你喜欢
  • 2010-12-21
  • 2012-04-09
  • 2012-04-23
  • 1970-01-01
  • 2016-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多