gpt4 book ai didi

c# - 是否有与 Java 的 LineNumberReader 等效的 C#?

转载 作者:行者123 更新时间:2023-11-30 15:46:40 66 4
gpt4 key购买 nike

是否有与 Java 的 LineNumberReader 等效的 C# ?

即一个 StreamReader.ReadLine() 用于记录行号。或者是通过创建 StreamReader 的自定义子类来实现此目的的唯一方法, 并在覆盖的方法中实现必要的计数?

最佳答案

.NET Framework 中没有直接的等效项。

如果您创建自定义类,我建议您创建一个扩展 TextReader 的类并包装一个 TextReader实例,因此它可以与任何 TextReader 一起使用子类(StreamReaderStringReader)。

至少,您需要覆盖 TextReader.ReadTextReader.Peek方法。为了提高效率,您还应该覆盖 TextReader 的所有其他虚拟方法。类。

class LineNumberTextReader : TextReader
{
private readonly TextReader reader;
private int b;
private int line;

public LineNumberTextReader(TextReader reader)
{
if (reader == null) throw new ArgumentNullException("reader");
this.reader = reader;
}

public int Line
{
get { return this.line; }
}

public override int Peek()
{
return this.reader.Peek();
}

public override int Read()
{
int b = this.reader.Read();
if ((this.b == '\n') || (this.b == '\r' && b != '\n')) this.line++;
return this.b = b;
}

protected override void Dispose(bool disposing)
{
if (disposing) this.reader.Dispose();
}
}

关于c# - 是否有与 Java 的 LineNumberReader 等效的 C#?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4180475/

66 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com