[C# | quest | find errors] Интеграция языков

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by dober.man, 9 Jan 2010.

  1. dober.man

    dober.man Banned

    Joined:
    9 Dec 2009
    Messages:
    6
    Likes Received:
    8
    Reputations:
    4
    Всем пишущим под dotNET должно быть известно, что CLR обеспечивает интеграцию языков и позволяет объектам, созданным на одном языке, быть «равноправными гражданами» кода, написанного на другом. Такая интеграция возможна благодаря стандартному набору типов, информации, описывающей тип (метаданным), и общей среде выполнения CLR.

    Вот небольшое задание (просьба постить ответы без использования компилятора)
    Какие ошибки выдаст компилятор C# при выполнении следующего кода:
    Code:
    using System; 
    [assembly: CLSCompliant(true)] 
    namespace SomeLibrary 
    { 
    	public sealed class SomeLibraryType 
    	{ 
    		public UInt32 Abc() { return 0; } 
    		public void abc() { } 
    		private UInt32 ABC() { return 0; } 
    	}
    }
     
  2. Algol

    Algol New Member

    Joined:
    29 May 2002
    Messages:
    1,759
    Likes Received:
    4
    Reputations:
    0
    UInt32 - не совместим с CLS
     
  3. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    имена методов строчными и прописными буквами не прокатят. посерьезнее должны отличаться
     
  4. dober.man

    dober.man Banned

    Joined:
    9 Dec 2009
    Messages:
    6
    Likes Received:
    8
    Reputations:
    4
    Не совсем так, но почти! =)
    Поясню:
    Тут во многом идет сравнение с другими языками. CLS описывает минимальный набор возможностей, который должны реализовать производители компиляторов, чтобы их продукты работали в CLR.

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

    upd:

    Верно!
    Тот же Visual Basic не сможет вызвать оба эти метода, т.к. мешают регистр букв в названии метода и возвращаемый тип.
     
    #4 dober.man, 10 Jan 2010
    Last edited: 10 Jan 2010