в

Беларусь

Belarusian .NET User Group

Контакты

Для связи: info ( @ ) belarusdotnet.org

либо dotnetby ( @ ) gmail.com

Наши партнеры

Минский институт управления
 
ООО Альторос Девелопмент - компания-резидент Парка высоких технологий, которая специализируется на создании тиражных продуктов под заказ с использованием новейших технологий, включая .NET Framework 3.5 и Windows Mobile.
 
JetBrains UG Program Member

Этот Блог

Engler

Декабрь 2008 - Сообщения

  • C# 4.0 и dynamic

    В какой-то момент игрался с dynamic и приведением типов в C# 4.0. Ну и получился примерно такой код.

    По природе, такой код не должен скомпилироваться, т.к не существуетс неявного преобразования из dynamic в String.

    Вобщем-то этот код и не компилируется, правда по причине Internal Compiler Error :-).

    Забавно было увидеть, т.к ни разу еще не видел как падает компилятор.

    Компитентные источники сообщили, что во внутренних билдах(которые не доступны широкой публике) этот баг исправлен.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace Sample.Inner
    {
        public class C
        {
            public static void Test()
            {
                dynamic d = "Ooops...";
                Print(d);
            }

            public static void Print(String p)
            {
                Console.WriteLine(p);
            }
        }
    }

    namespace Sample
    {
        class Program
        {
            static void Main(string[] args)
            {
                Sample.Inner.C.Test();
            }
        }
    }

     

    Можно еще отметить следующий нюанс - если изменить область видимости метода Print,

    таким образом:

    private static void Print(String p) 

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

Сейчас на сайте

Community Server (Commercial Edition)