Будет ли использование не-CLS-совместимых типов в языке, который не поддерживает беззнаковые причины, причиной? - PullRequest
1 голос
/ 06 сентября 2011

Мой случай:

Я работаю с библиотекой .net, которая упаковывает существующую библиотеку C ++. Один метод в C ++ возвращает целое число без знака, и я также хочу вернуть соответствующий метод .net с System.Uint32.

Не вызовет ли это проблемы для языков, которые не поддерживают типы данных без знака?

Ответы [ 2 ]

1 голос
/ 06 сентября 2011

Скорее всего, будут проблемы (особенно когда вы возвращаете числа, которые больше чем 2 ^ 31), но согласно этому сообщению SO

Существуют ли языки, совместимые с .NET, которые не поддерживают типы без знака?

кажется, что не так много языков .NET (или, не важно, языков, хотя важность может быть субъективной), которые не поддерживают типы данных без знака.

0 голосов
/ 02 июня 2014

Если класс является законно совместимым с CLS, единственными функциями, которые требуются для поддержки языков помимо минимальных требований CLS, будут те, которые были бы бессмысленными в отсутствие таких функций.Например, CLS-совместимая группа методов может включать в себя перегрузки для целочисленных типов без знака, если какая-либо функциональность, предоставляемая этими методами, будет доступна с помощью других средств.

Если класс должен делать что-то вроде обеспечения средств чтенияи при записи 32-битных значений без знака из некоторого набора внешних данных соответствие CLS не запрещало бы типу предоставлять методы для чтения и записи данных типа UInt32, но требовало бы, чтобы любые данные, которые можно было прочитать или записать с помощью таких методов, должныбыть читаемым другими методами, которые не требуют этого типа [например, они могли бы использовать Int64 вместо].Код клиента, использующий Int64, может быть менее эффективным, чем код, использующий UInt32, но отказ языка, поддерживающего UInt32, не помешает клиентскому коду делать то, что ему нужно, - он просто замедлитэто немного вниз.

...