Всем пишущим под 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; }
}
}
Не совсем так, но почти! =)
Поясню:
Тут во многом идет сравнение с другими языками. CLS описывает минимальный набор возможностей, который должны реализовать производители компиляторов, чтобы их продукты работали в CLR.
Первая ошибка выдается так как метод Abc возвращает целочисленное значение без знака, a, скажем, Visual Basic не может работать с такими значениями.
upd:
Цитата:
Сообщение от Ra$cal
имена методов строчными и прописными буквами не прокатят. посерьезнее должны отличаться
Верно!
Тот же Visual Basic не сможет вызвать оба эти метода, т.к. мешают регистр букв в названии метода и возвращаемый тип.
Последний раз редактировалось dober.man; 10.01.2010 в 01:24..