c# - 构造类的属性只能在构造函数中设置,但在哪里?

标签 c# variables properties member

我正在尝试创建一个类,它在其构造函数中将值 a 作为参数。 它有一个私有(private)成员变量来存储这个值。之后不应更改该值。

这是我所拥有的,它有效,但我认为这不是最好的解决方案:

internal class Foo
{
    private int a;
    public int A
    {
        get
        {
            return this.a;
        }
    }

    public Foo(int a)
    {
        this.a = a;
    }
}

所以这样你就不能从类的外部访问aA-property 只有一个get 方法。但是,您仍然可以从类内部更改 a,并使用只返回一个变量而没有其他任何东西的属性感觉很愚蠢。

我这样做是否正确,或者是否有改进我的代码的方法/更正确的方法来做到这一点?

最佳答案

另外声明你的私有(private)字段readonly你在那里!

public class Foo
{
    public Foo(int bar)
    {
        this.bar = bar;
    }

    public int Bar
    {
        get
        {
            return bar;
        }
    }
    private readonly int bar;
}

关于c# - 构造类的属性只能在构造函数中设置,但在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15720306/

相关文章:

c# - 如何在 .Net 应用程序中使用区域时区?

c# - SqlKata 事务

ruby-on-rails - Rails - 在 flash 通知中传递变量

iphone - 如果我使用 self.fooBar 而不是 fooBar,性能会有所不同吗?

c# - ServiceStack OrmLite 可以使用非公共(public) setter 设置属性吗?

c# - 小于和大于需要在 C# 正则表达式中转义吗?

python - 修复处理@property setter装饰器的pyflakes

tomcat - 如何在启动时在 Tomcat 配置中指定系统属性?

c++ - 你如何在 C++ 中将指数与变量一起使用?

php - 我可以用 PHP 中的另一个变量修改字符串中的变量吗?