实现“常量对象”的正确方法是什么?

时间:2017-01-25 11:08:24

标签: .net vb.net oop

我正在尝试让我感到非常普遍的事情,但我正在努力用良好的方式来实现它。

我创建了一个'Tag'类,如下所示:

Public Class Tag
    Public Name As String
    Private Server As Server
    ...
End Class

标签是在运行时创建的,所以对我来说很有意义。 但是,这些标记存储在服务器上,定义如下:

Public Class Server
    Public Name As String
    Public Location As Location (<- An Enum)
    ...
End Class

服务器在运行时之前是已知的,永远不会改变,永远不会移动,等等。

现在,我在程序的最开始创建它们,就像任何对象一样,并将它们存储在变量中:

Dim Server1 As New Server
Server1.Name = "Server1"
Server1.Location = "Somewhere"

Dim Server2 As New Server
....

我觉得这不是你应该这样做的方式,但我不清楚什么是正确的方法。

总而言之,我有'常量对象',意思是在编码期间属性已知的对象,并且永远不会在运行时更改。在运行时使其他对象可以访问这些对象的最佳方法是什么?

非常感谢你的帮助

1 个答案:

答案 0 :(得分:1)

这些常量对象通常称为不可变对象

在.NET中,获取不可变对象的最简单途径是使用构造函数和只读属性设计类。

private void myContextMenuStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
    ToolStripItem item = e.ClickedItem;

    //////////// This will show "nameOfMenuItem":
    MessageBox.Show(item.Name, "And the clicked option is...");
}