title: Declaring long strings that use string interpolation in C# 6
body: <p>I usually wrap long strings by concatenating them:</p>
  
  <pre><code>Log.Debug("I am a long string. So long that I must " +
      "be on multiple lines to be feasible.");
  </code></pre>
  
  <p>This is perfectly efficient, since the compiler handles concatenation of string literals. I also consider it the cleanest way to handle this problem (<a href="https://stackoverflow.com/questions/1565847/declaring-a-looooong-single-line-string-in-c-sharp">the options are weighed here</a>).</p>
  
  <p>This approach worked well with <code>String.Format</code>:</p>
  
  <pre><code>Log.Debug(String.Format("Must resize {0} x {1} image " +
      "to {2} x {3} for reasons.", image.Width, image.Height,
      resizedImage.Width, resizedImage.Height));
  </code></pre>
  
  <p>However, I now wish to never use <code>String.Format</code> again in these situations, since C# 6's string interpolation is much more readable. <strong>My concern is that I no longer have an efficient, yet clean way to format long strings.</strong></p>
  
  <p>My question is if the compiler can somehow optimize something like</p>
  
  <pre><code>Log.Debug($"Must resize {image.Width} x {image.Height} image " +
      $"to {resizedImage.Width} x {resizedImage.Height} for reasons.");
  </code></pre>
  
  <p>into the above <code>String.Format</code> equivalent or if there's an alternative approach that I can use that won't be less efficient (due to the unnecessary concatenation) while also keeping my code cleanly structured (as per the points raised in the link above).</p>