如何使用语句 System.Text.Encoding 防止内部代码重复
本文关键字:内部 代码 Encoding 何使用 语句 System Text | 更新日期: 2023-09-27 18:20:37
好的,在这种特殊情况下如何防止代码重复
由于流读取器字符编码而发生重复。
在某些情况下,我想使用默认值,在某些情况下,我想定义自己。
irCustomEncoding
是一个整数
当我不提供编码时,应用程序默认做什么?
using (Stream strumien = response.GetResponseStream())
{
if (irCustomEncoding == 0)
{
using (StreamReader sr = new StreamReader(strumien))
{
srBody = sr.ReadToEnd();
}
}
else
{
using (StreamReader sr = new StreamReader(
strumien, System.Text.Encoding.GetEncoding(irCustomEncoding)))
{
srBody = sr.ReadToEnd();
}
}
}
所以我要问的是我如何编写单个using (StreamReader...
而不是重复代码
非常
C# WPF .NET 4.5
var sr = irCustomEncoding == 0
? new StreamReader(strumien)
: new StreamReader(strumien, Encoding.GetEncoding(irCustomEncoding));
using (sr)
{
}
如果您
没有其他的,请使用Encoding.UTF8
:
var encoding = irCustomEncoding == 0 ? Encoding.UTF8
: Encoding.GetEncoding(irCustomEncoding);
using (TextReader reader = new StreamReader(strumien, encoding))
{
srBody = reader.ReadToEnd();
}
(如果未指定StreamReader
编码,则Encoding.UTF8
是默认值。
或者,您可以通过代码页号获取 UTF8:
var codePage = irCustomEncoding == 0 ? Encoding.UTF8.CodePage : irCustomEncoding;
var encoding = Encoding.GetEncoding(codePage);
// Rest of the code as before
using (...)
{
...
}
首先,
多重using
根本不是代码重复。
但是,您可以简单地执行以下操作:
Stream strumien;
StreamReader sr;
try
{
sr = irCustomEncoding == 0 ? StreamReader sr = new StreamReader(strumien) : StreamReader sr = new StreamReader(...);
if (irCustomEncoding == 0)
{
srBody = sr.ReadToEnd();
}
else
{
// use sr
}
}
finally
{
strumien.Dispose();
sr.Dispose();
}