C#中是否有内置的编码枚举?

时间:2016-11-17 15:19:37

标签: c# encoding enums

我有一个接收Encoding对象作为参数的函数。但是,我认为其他程序员可以更容易地传递枚举值而不是Encoding对象(特别是对于不用于处理不同编码的程序员)。我无法在C#中找到任何内置的编码枚举...我错过了什么或者我应该创建自己的枚举吗?

3 个答案:

答案 0 :(得分:5)

  

使用枚举的想法是帮助程序员可能不知道从哪里获取不同的编码对象

寻求最不惊讶的原则。想要改变编码的开发人员将知道(或至少,需要知道)他们正在做什么,因此他们应该知道如何获得表示他们想要的编码的Encoding实例使用

如果他们不在,他们可以在网络上搜索" .net获取代码页XYZ" 的编码,将他们引导至{{1}的MSDN页面}。如果你引入一个新的枚举,他们谷歌搜索" .net获取TheBlackSmurf.EncodingEnum代码页XYZ" 将产生零结果。

不要为那些不知道自己在做什么的人提供帮助。

如果您要使用枚举,那么 的一位开发人员可能希望更改编码并知道使用哪种编码以及如何获取编码,可以&# 39;利用它,因为你没有想到那个,也没有把它包含在你的枚举中。

另一方面,枚举可能是一个可行的解决方案,如果由于某种原因您的软件只能支持少数编码。

答案 1 :(得分:2)

嗯不,没有枚举。 但是在Encoding类中有预定义的Encodings作为静态对象(参见https://msdn.microsoft.com/en-us/library/system.text.encoding.aspx),如ASCII和UTF8,基本上提供与枚举相同的功能。

如果您绝对需要使用枚举,您可以编写自己的映射到不同的预定义编码。它只有几行代码。

答案 2 :(得分:1)

同意@ MarioDS的评论,这就是我要去的地方:

XML Docs提供IntelliSense

///<param name="encoding">
///    Whatever it means to this function…. 
///    Examples: Encoding.Unicode or Encoding.GetEncoding(1252)
///</param>

(您可以通过seeseealsocref或其他任何方式获得更多信息,但这样会使信息源变得不那么有利。)

使用中:

Code showing function call with IntelliSense tool tip