我的情况是:
我正在使用一个包装现有 C++ 库的 .net 库。C++ 中的一种方法返回一个无符号整数,我还想返回带有 System.Uint32 的 .net 对应方法。
这会对不支持无符号数据类型的语言造成一些问题吗?
我的情况是:
我正在使用一个包装现有 C++ 库的 .net 库。C++ 中的一种方法返回一个无符号整数,我还想返回带有 System.Uint32 的 .net 对应方法。
这会对不支持无符号数据类型的语言造成一些问题吗?
很可能会有问题(尤其是当您返回大于 2^31 的数字时),但根据此 SO post
似乎没有多少 .NET 语言(或者,没有重要的语言,尽管重要性可能是主观的)不支持无符号数据类型。
如果一个类合法地兼容 CLS,那么唯一需要语言来支持超出 CLS 最低要求的功能将是那些在没有这些功能的情况下将毫无意义的功能。例如,如果这些方法提供的任何功能可通过其他方式使用,则符合 CLS 的方法组可能包括无符号整数类型的重载。
如果一个类应该做一些事情,比如提供一种从某些外部数据集中读取和写入无符号 32 位值的方法,CLS 合规性不会禁止该类型提供读取和写入 type 数据的方法UInt32
,但会要求任何可以通过此类方法读取或写入的数据必须可由不需要该类型的其他方法读取[例如,它们可以使用Int64
]。使用的客户端代码Int64
可能比使用的代码效率低UInt32
,但是支持语言的失败UInt32
不会阻止客户端代码做它需要做的事情——它只会稍微减慢它的速度。