在nullables和base类型之间实现运算符 - 我应该吗?

时间:2011-09-15 06:21:37

标签: c# operator-overloading nullable

这可能是众所周知和讨论的,但令我惊讶的是,我今天发现你可以在nullables和它们的基类型之间提供你自己的运算符实现。

这意味着您可以拥有struct可以检查null,并返回 true

现在这在我的情况下会很方便 - 根据another member的建议我有一个包裹字符串的结构。能够直接将这个包裹的字符串直接比较为null(而不是使用.IsNull或类似的)对我来说更自然,并且意味着从使用字符串变为这些WrappedStrings通常不需要对代码进行其他更改。

但是......事实上这个特征是(我相信)鲜为人知,反对任何人思考结构(它是)的字符串(它代表),以及它混淆ReSharper({{1警告“表达总是假的”)让我觉得这可能是一个肮脏而又整洁的技巧橱柜中留下的肮脏技巧。

所以我想知道,你会采纳它吗?如果没有,你会原谅我这样做吗?或者最好不要走这条路?


structValue == null

1 个答案:

答案 0 :(得分:1)

我非常相信自我记录的代码,并且与principle of least astonishment一致。例如,“getters”不应该修改数据等。我会考虑将一个struct变量与null相比较乍一看相当混乱,所以我会避免它(无论它看起来多么方便)。如果您期望许多人使用(或至少查看)您的代码,则尤其如此。