看看这个VB.NET代码:
list = GeoController.RegionByCountry(country, language)
Region.allByLanguage(key) = list
Run Code Online (Sandbox Code Playgroud)
在C#中,我可以写一行:
Region.allByLanguage[key] =
(list = GeoController.RegionByCountry(country, language))
Run Code Online (Sandbox Code Playgroud)
有没有办法在VB.NET中使这个单行,就像我在C#中一样?
编辑:你们都必须要睡一觉,否则你可能会想得更加困难.
Region.allByLanguage 是一个缓存.
这是上下文:
Dim list As IEnumerable(Of Region)
Dim key = Region.CacheKey(country, language)
If Region.allByLanguage.ContainsKey(key) Then
list = Region.allByLanguage(key)
Else
list = GeoController.RegionsByCountryAndLanguage(country, language)
Region.allByLanguage(key) = list
End If
Return list
Run Code Online (Sandbox Code Playgroud)
你怎么能告诉我那不是冗长的代码?战栗.
哎呀,如果这是一个C#团队,我只想写:
return Region.allByLanguage.ContainsKey(key) ?
Region.allByLanguage[key] :
(Region.allByLanguage[key] = GeoController.RegionsByCountryAndLanguage(country, language));
Run Code Online (Sandbox Code Playgroud)
您是否真的需要访问该list实例?如果没有,为什么不这样写呢?
Region.allByLanguage[key] = GeoController.RegionByCountry(country, language));
Run Code Online (Sandbox Code Playgroud)
对于C#,你的语法似乎也很奇怪,我不认为很多人会以这种方式编写代码.
此外,如果它使代码的可读性降低,那么本身就没有减少代码行数的目标,就像你在这种情况下尝试做的那样.
如果您要分配到两个Region.allByLanguage[key]及list,我宁愿两行代码如果我是读你的代码.在一行代码中合并两个赋值似乎是最好的,并且读者可能没有意识到它list被分配了Region.allByLanguage[key].