C#:实例化Pixel类后Console.WriteLine输出字符串为空的问题
问题原因与解决办法
你的问题核心是构造函数里错误地声明了局部变量,而非给类的属性赋值,导致Text属性始终是默认的null,Console.WriteLine(null)会输出空行。
具体问题分析
在Pixel类的构造函数中:
public Pixel(int x, int y, string text) { int X = x; int Y = y; string Text = text; }
这里的int X = x;并不是给类的X属性赋值,而是在构造函数内部创建了一个同名的局部变量,类的X、Y、Text属性完全没有被初始化:
- 值类型
int的默认值是0,所以X和Y属性输出0符合预期; - 引用类型
string的默认值是null,Console.WriteLine(null)会输出空行,这就是第二行为空的原因。
修复代码
只需要去掉构造函数里局部变量的类型声明,直接给类的属性赋值即可(C#中只读属性{ get; }允许在构造函数内赋值):
class Pixel { public Pixel(int x, int y, string text) { X = x; Y = y; Text = text; } public int X { get; } public int Y { get; } public string Text { get; } public void render() { Console.WriteLine(X); Console.WriteLine(Text); Console.WriteLine(Y); } }
运行修正后的代码,控制台会输出:
0 X 0
为什么替换成Console.WriteLine("X")能生效?
因为这是直接输出字符串字面量"X",和Text属性无关,绕过了未初始化的属性问题,但并没有解决类本身的逻辑错误。
内容的提问来源于stack exchange,提问作者TheAnonymous
相关产品推荐
相关产品推荐

