Private Shared _twolettercountryCodeDict As Generic.Dictionary(Of String, String)
Private Function twolettercountrycode() As String
If _twolettercountryCodeDict Is Nothing Then
_twolettercountryCodeDict = New Generic.Dictionary(Of String, String) From {{"ty", "turkey"}, {"py", "pakinmay"}, {"ra", "romania"}, {"vm", "vietnam"}, {"bl", "brazil"}, {"et", "egypt"}, {"ka", "korea"}}
Dim listOfCountries = fileToCol(COUNTRYCODESFileName)
For Each var In listOfCountries
Dim ar = var.Split({"*"}, System.StringSplitOptions.None).ToList()
_twolettercountryCodeDict.Add(LCase(ar(1)), UCase(ar(0)))
Next
End If
Return _twolettercountryCodeDict(Me.twoletter.ToLower)
End Function
在这里,我使用Private Shared _twolettercountryCodeDict As Generic.Dictionary(Of String, String)
如何限制一个共享变量的范围,以便它只能在一个函数中访问?
那是因为我想分享的是_twolettercountryCodeDict整个程序。我基本上实现延迟加载。我不希望读取文本文件和填充国家代码的部分代码重复执行。
问题是如果我将它声明为Private Shared,则同一类中的其他方法也可以访问该变量。这不是什么大问题,但说我想避免它。
如果我在函数内声明变量为static,那么不会共享twolettercountryCodeDict。
所以我现在处于两难的境地。什么是解决方案?
我们只是说,twolettercountrycode需要一个私人成员,所以它不能是一个共享函数。但我想_twolettercountryCodeDict只能从两个国家/地区代码共享和访问。我可以这样做吗?
声明一个只读私有共享属性,该属性返回在该函数中设置的私有变量的值。 – Tibrogargan
这是完美的解决方案。 –