一尘不染

C#中的“常量正确性”

c#

const正确性的重点是能够提供用户无法更改或删除的实例的视图。编译器通过指出何时从const函数中破坏constness或尝试使用const对象的非const函数来支持此功能。因此,无需复制const方法,是否可以在C#中使用具有相同目的的方法?

我知道不变性,但这并没有真正延续到容器对象上,只是一个例子。


阅读 373

收藏
2020-05-19

共1个答案

一尘不染

我也多次遇到这个问题,最终使用接口。

我认为重要的一点是,不要认为C#是任何形式,甚至是C ++的演变。它们是两种几乎共享相同语法的不同语言。

我通常通过定义类的只读视图在C#中表达“常量正确性”:

public interface IReadOnlyCustomer
{
    String Name { get; }
    int Age { get; }
}

public class Customer : IReadOnlyCustomer
{
    private string m_name;
    private int m_age;

    public string Name
    {
        get { return m_name; }
        set { m_name = value; }
    }

    public int Age
    {
        get { return m_age; }
        set { m_age = value; }
    }
}
2020-05-19