VB.NET:组合赋值(运算符语法)

Agi*_*ble 0 c# vb.net

看看这个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)

Øyv*_*hen 7

您是否真的需要访问该list实例?如果没有,为什么不这样写呢?

 Region.allByLanguage[key] = GeoController.RegionByCountry(country, language));
Run Code Online (Sandbox Code Playgroud)

对于C#,你的语法似乎也很奇怪,我不认为很多人会以这种方式编写代码.

此外,如果它使代码的可读性降低,那么本身就没有减少代码行数的目标,就像你在这种情况下尝试做的那样.

如果您要分配到两个Region.allByLanguage[key]list,我宁愿两行代码如果我是读你的代码.在一行代码中合并两个赋值似乎是最好的,并且读者可能没有意识到它list被分配了Region.allByLanguage[key].