gpt4 book ai didi

c# - 设置在具体类的接口(interface)中定义的只读属性

转载 作者:太空狗 更新时间:2023-10-29 22:03:17 27 4
gpt4 key购买 nike

我有一个只读属性的接口(interface)

public interface IPerson
{
string Name { get; }
}

和一个具体的类...

public class Person : IPerson
{

public Person()
{
Name = "Person";
}

public string Name
{
get
{
return Name;
}
}
}

我希望 Name 只能在该类的外部读取,但如何在具体类中设置它?

错误:无法将 Person.Name 分配给。

如何在 Person 类中设置此属性的值?

最佳答案

这与接口(interface)没有任何关系,您只是错误地声明了属性。在 C# 6 中,您可以像这样创建一个只读属性:

public class Person : IPerson
{
public Person()
{
Name = "Person";
}

public string Name { get; }
}

在早期版本中,您可以使用可设置的只读支持字段:

public class Person : IPerson
{
private readonly string _name;

public Person()
{
_name = "Person";
}

public string Name
{
get { return _name; }
}
}

请注意,接口(interface)只要求属性有一个 getter,实现不必是只读的。如果您有理由修改该值,您可以添加一个 setter :

public class Person : IPerson
{
public Person()
{
Name = "Person";
}

public string Name { get; set; }
}

如果您只需要能够从类中更改值,则 setter 可以是私有(private)的。

关于c# - 设置在具体类的接口(interface)中定义的只读属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38520797/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com