Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   [C# | quest | find errors] Интеграция языков (https://forum.antichat.xyz/showthread.php?t=169529)

dober.man 09.01.2010 21:30

[C# | quest | find errors] Интеграция языков
 
Всем пишущим под dotNET должно быть известно, что CLR обеспечивает интеграцию языков и позволяет объектам, созданным на одном языке, быть «равноправными гражданами» кода, написанного на другом. Такая интеграция возможна благодаря стандартному набору типов, информации, описывающей тип (метаданным), и общей среде выполнения CLR.

Вот небольшое задание (просьба постить ответы без использования компилятора)
Какие ошибки выдаст компилятор C# при выполнении следующего кода:
Код:

using System;
[assembly: CLSCompliant(true)]
namespace SomeLibrary
{
        public sealed class SomeLibraryType
        {
                public UInt32 Abc() { return 0; }
                public void abc() { }
                private UInt32 ABC() { return 0; }
        }
}


Algol 10.01.2010 00:45

UInt32 - не совместим с CLS

Ra$cal 10.01.2010 01:08

имена методов строчными и прописными буквами не прокатят. посерьезнее должны отличаться

dober.man 10.01.2010 01:20

Цитата:

Сообщение от Algol
UInt32 - не совместим с CLS

Не совсем так, но почти! =)
Поясню:
Тут во многом идет сравнение с другими языками. CLS описывает минимальный набор возможностей, который должны реализовать производители компиляторов, чтобы их продукты работали в CLR.

Первая ошибка выдается так как метод Abc возвращает целочисленное значение без знака, a, скажем, Visual Basic не может работать с такими значениями.

upd:

Цитата:

Сообщение от Ra$cal
имена методов строчными и прописными буквами не прокатят. посерьезнее должны отличаться

Верно!
Тот же Visual Basic не сможет вызвать оба эти метода, т.к. мешают регистр букв в названии метода и возвращаемый тип.


Время: 02:17