是否会在不支持无符号原因问题的语言中使用非CLS兼容类型?

时间:2011-09-06 07:21:23

标签: .net c++-cli unsigned cls-compliant

我的情况是:

我正在使用一个包装现有C ++库的.net库。 C ++中的一个方法返回unsigned int,我也希望使用System.Uint32返回.net对应的方法。

这是否会导致某些不支持无符号数据类型的语言出现问题?

2 个答案:

答案 0 :(得分:1)

很可能会出现问题(特别是当你返回大于2 ^ 31的数字时),但根据这个SO帖子

Are there languages compatible with .NET that don't support unsigned types?

似乎没有很多.NET语言(或者,没有重要的,但重要性可能是主观的),它们不支持无符号数据类型。

答案 1 :(得分:0)

如果一个类合法地符合CLS,那么应该要求语言支持超出CLS最低要求的东西的唯一特征将是那些在没有这些特征的情况下毫无意义的特征。例如,如果通过其他方法可以获得这些方法提供的任何功能,则符合CLS的方法组可能包含无符号整数类型的重载。

如果某个类应该执行某些操作,例如提供从某些外部数据集读取和写入无符号32位值的方法,则CLS合规性不会禁止该类型提供读取和写入类型{{1的数据的方法但是,要求任何可以通过此类方法读取或写入的数据必须可由其他不需要该类型的方法读取[例如他们可以使用UInt32代替]。使用Int64的客户端代码可能效率低于使用Int64的代码,但语言支持UInt32失败并不会阻止客户端代码执行所需的操作这样做 - 它只会略微减缓它。