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

从Java转C#:模拟Java式getter为何未返回预期值?

问题原因及解决方法

问题根源

你在Main方法中调用getName时没有加括号():

Console.WriteLine(alex.getName);

在C#中,不带括号的方法名代表的是方法本身的引用(此处为Func<string>类型的委托),而非执行方法后的返回值。Console.WriteLine会输出这个委托类型的全称,也就是你看到的System.Func1[System.String]`。

解决方法

给getName加上括号,明确执行方法并获取返回值:

Person alex = new Person();
alex.setName("alex");
Console.WriteLine(alex.getName()); // 添加()执行方法

修改后就能输出预期的alex。

额外建议:使用C#风格的属性

从Java转C#,更推荐使用C#原生的属性语法替代Java风格的get/set方法,代码更简洁且符合语言习惯:

internal class Person
{
    // 自动实现属性,编译器会自动生成背后的字段
    internal string Name { get; set; }
}

使用方式也更直观:

Person alex = new Person();
alex.Name = "alex";
Console.WriteLine(alex.Name);

内容的提问来源于stack exchange,提问作者Alexandru Manole

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 05:22:02