2017-05-02 20 views
4

我知道,我们可以在C#中使用的格式说明符串插6软编码格式说明的插值字符串C#6.0

var someString = $" the date was ... {_criteria.DateFrom:dd-MMM-yyyy}"; 

但是我一遍又一遍的使用相同的格式,在相同的方法所以想软代码,但不知道如何做到这一点,甚至如果可能,

DateTime favourite; 
DateTime dreaded; 

... 
... 

const string myFormat = "dd-MMM-yyyy"; 

var aBigVerbatimString = [email protected]" 
    my favorite day is {favourite:$myFormat} 
    but my least favourite is {dreaded:$myFormat} 
    blah 
    blah 
    "; 

谁能告诉我该怎么做,或者确认我公司不可能的,因为我已经做了一些阅读并没有发现任何可能的暗示

+0

http://stackoverflow.com/a/32360534/916000 –

回答

1

字符串插值直接编译成等效的格式语句,所以

var someString = $" the date was ... {_criteria.DateFrom:dd-MMM-yyyy}"; 

变得字面上

var someString = string.Format(
    " the date was ... {0:dd-MMM-yyyy}", 
    _criteria.DateFrom); 

其是功能上等同于

var someString = string.Format(
    " the date was ... {0}", 
    _criteria.DateFrom.ToString("dd-MMM-yyyy")); 

由于编译器最终对待dd-MMM-yyyy如要传递给ToString()方法的字符串文字,没有办法避免使用这种习惯用法时使用硬编码。

如果您想softcode的格式说明字符串,你可以选择直接使用string.Format,如下:

var someString = string.Format(
    " the date was ... {0}", 
    _criteria.DateFrom.ToString(formatSpecifier));