【发布时间】:2026-01-15 11:00:02
【问题描述】:
我编写了一个辅助类,它在构造函数中接受一个字符串,并提供许多 Get 属性来返回字符串的各个方面。目前设置线的唯一方法是通过构造函数,一旦设置就无法更改。由于这个类只有一个内部变量(字符串),我想知道我应该保持这种方式还是应该允许设置字符串?
一些示例代码我的帮助我为什么要问:
StreamReader stream = new StreamReader("ScannedFile.dat");
ScannerLine line = null;
int responses = 0;
while (!stream.EndOfStream)
{
line = new ScannerLine(stream.ReadLine());
if (line.IsValid && !line.IsKey && line.HasResponses)
responses++;
}
以上是计算给定扫描文件中有效响应数量的快速示例。像这样编码会更有利吗?
StreamReader stream = new StreamReader("ScannedFile.dat");
ScannerLine line = new ScannerLine();
int responses = 0;
while (!stream.EndOfStream)
{
line.RawLine = stream.ReadLine();
if (line.IsValid && !line.IsKey && line.HasResponses)
responses++;
}
此代码用于 ASP.net Web 应用程序的后端,需要具有一定的响应性。我知道这可能是过早优化的情况,但我正在对此进行编码以提高客户端的响应能力和可维护性。
谢谢!
编辑 - 我决定也包含该类的构造函数(是的,这就是它的真正含义。):
public class ScannerLine
{
private string line;
public ScannerLine(string line)
{
this.line = line;
}
/// <summary>Gets the date the exam was scanned.</summary>
public DateTime ScanDate
{
get
{
DateTime test = DateTime.MinValue;
DateTime.TryParseExact(line.Substring(12, 6).Trim(), "MMddyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out test);
return test;
}
}
/// <summary>Gets a value indicating whether to use raw scoring.</summary>
public bool UseRaw { get { return (line.Substring(112, 1) == "R" ? true : false); } }
/// <summary>Gets the raw points per question.</summary>
public float RawPoints
{
get
{
float test = float.MinValue;
float.TryParse(line.Substring(113, 4).Insert(2, "."), out test);
return test;
}
}
}
**EDIT 2 - ** 我包含了该类的一些示例属性以帮助澄清。如您所见,该类从扫描仪中获取固定字符串,并且可以更轻松地将行拆分为更有用的块。该文件是来自 Scantron 机器的行分隔文件,解析它的唯一方法是一堆 string.Substring 调用和转换。
【问题讨论】:
-
你应该将 StreamReader 包含在 using 语句中。
-
哈哈,其实我做完后有一个显式的close,不过我清理了代码专心解决问题。
标签: c# .net asp.net optimization class