You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 01:32:13