PDA

Просмотр полной версии : [C# | quest | find errors] Интеграция языков


dober.man
09.01.2010, 21:30
Всем пишущим под 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
UInt32 - не совместим с CLS
Не совсем так, но почти! =)
Поясню:
Тут во многом идет сравнение с другими языками. CLS описывает минимальный набор возможностей, который должны реализовать производители компиляторов, чтобы их продукты работали в CLR.

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

upd:

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