加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 有没有办法禁用从UInt32到char的隐式转换?

发布时间:2020-12-15 08:00:58 所属栏目:百科 来源:网络整理
导读:我正在处理代码,该代码将特定协议定义的大量ascii文本作为输入.原作者将原始协议中的“string(1)”数据类型解释为代码中的字符. 在角落的情况下有很多微妙的错误,你有代码,如: char theChar = whatever();if(theChar == 7) {...} 真正的意思是: if(theChar
我正在处理代码,该代码将特定协议定义的大量ascii文本作为输入.原作者将原始协议中的“string(1)”数据类型解释为代码中的字符.

在角落的情况下有很多微妙的错误,你有代码,如:

char theChar = whatever();
if(theChar == 7) {...}

真正的意思是:

if(theChar == '7') {...}

为了尝试一次捕获所有这些,有没有办法禁用隐式转换为’char’?如果没有,那么追踪所有这些的最佳方法是什么?

解决方法

您应该能够为char编写一个简单的替换类(它包含一个char作为其数据,并提供一些强制转换操作符以允许它被用作char),它不允许隐式强制转换为/来自ints,然后搜索并用’mychar’替换’char’.这将抛出您可以修复的编译器错误,然后如果您希望您可以将代码恢复为再次使用char,或坚持使用您的类.

这是一个很好的例子,临时使用宏在c …

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读