读取扑克手牌文本文件后Reader类Buffer为null的原因排查
问题原因分析
你的Reader类里的Buffer和Cursor被定义为静态(static)成员,这是核心问题:
- 静态成员属于类本身,而非类的实例对象。当你通过构造函数给
Buffer赋值时,实际上是给Reader这个类的静态Buffer赋值,而不是给你创建的reader实例赋值。 - 调试时如果查看
reader实例的属性,会找不到这个静态的Buffer(因为它不属于实例),所以会显示null,但实际上类的静态Buffer已经被赋值了。
修复方案
把Reader类里的static修饰符去掉,让Buffer和Cursor成为实例成员:
public class Reader { int Cursor { get; set; } string Buffer { get; set; } public Reader(string buffer, int cursor) { Cursor = cursor; Buffer = buffer; } }
另外可以优化ReaderHelper的文件读取逻辑,用更简洁安全的方式替代手动处理字节数组:
static class ReaderHelper { public static string ReadFromFile(string filePath) { return File.ReadAllText(filePath, Encoding.Default); } }
内容的提问来源于stack exchange,提问作者Юрій Кекош
相关产品推荐
相关产品推荐

