如果我用:
( A) var targetEncodingA = Encoding.ASCII;
和
( B) var targetEncodingB = new ASCIIEncoding();
那么targetEncoding0和targetEncoding1都是相同类型的。
在使用A或B时,是否有任何首选方案和/或优缺点?
(除了每次使用构造函数创建新实例之外)
发布于 2014-01-02 10:10:56
下面是Encoding.ASCII实现细节(来自Encoding.cs):
private static volatile Encoding asciiEncoding;
public static Encoding ASCII
{
{
if (Encoding.asciiEncoding == null)
Encoding.asciiEncoding = (Encoding) new ASCIIEncoding();
return Encoding.asciiEncoding;
}
}主要区别在于返回类型不同,这取决于您希望使用哪种类型(ASCIIEncoding与Encoding),而Encoding是基类。
从性能的角度来看,Encoding.ASCII是首选。
发布于 2014-01-02 10:02:13
在所有情况下,我更喜欢Encoding.ASCII,它是一个静态属性。它避免每次需要时创建一个新实例(单例)。
个人而言,我避免在可能的情况下使用新关键字,当静态类可以为您这样做时。我要补充的是,Encoding.ASCII比新的ASCIIEncoding()更短。
https://stackoverflow.com/questions/20880246
复制相似问题