.net 为什么不像Java(C#)那样返回getter

ih99xse1  于 2023-03-20  发布在  .NET
关注(0)|答案(2)|浏览(147)

我想从Java转到C#,我想尝试Java中的getter和setter

internal class Person
    {
 
        internal string name;
        

        internal void setName (string name)
        {
            this.name = name;   
        }

        internal string getName ()
        {
            return this.name;
        }

    }

主要内容:

Person alex = new Person();
alex.setName("alex");
Console.WriteLine(alex.getName);

输出为:

System.Func`1[System.String]

为什么不显示预期的“alex”?

xbp102n0

xbp102n01#

因为getName是一个函数,而不是一个getter,所以你的代码应该是

Console.WriteLine(alex.getName());

如果要使用setter和getter,语法为

internal class Person
{
  internal string name;
  internal string Name 
  {
    set { this.name = value; }
    get { return this.name; }
  }
}

或更紧凑

internal class Person
{
  internal string Name { get; set; }
}
6qftjkof

6qftjkof2#

在C#中,使用属性而不是显式的setter/getter。

internal string Name
{
    get => this.name
    set => this.name = value;
}

或者甚至更短,具有自动属性:

internal string Name
{
    get;
    set;
}

另外,在您的语句中Console.WriteLine(alex.getName);getName是方法,而不是它的结果,因此它打印了方法的类型。要解决这个问题,请将其更改为Console.WriteLine(alex.getName());,或者使用上面的属性,将其更改为Console.WriteLine(alex.Name));

相关问题