Пример #1
0
        public static void Test()
        {
            int i = 0;
            DInvariant <int> dInt        = () => i;
            DVariant <int>   dVariantInt = () => i;

            // All of the following statements generate a compiler error
            // because type variance in generic parameters is not supported
            // for value types, even if generic type parameters are declared variant.
            // DInvariant<Object> dObject = dInt;
            // DInvariant<long> dLong = dInt;
            // DVariant<Object> dVariantObject = dVariantInt;
            // DVariant<long> dVariantLong = dVariantInt;
        }
Пример #2
0
        public void TestVariance()
        {
            DInvariant <string> dinString = () => "";
            //DInvariant<object> dinObject = dinString;

            DCovariant <string> dcoString = () => " ";
            DCovariant <object> dcoObject = dcoString;

            DContravariant <object> dcontraObject = (a) => Console.WriteLine(a);
            DContravariant <string> dcontraString = dcontraObject;

            DVariant <object, string> dObjectString = (a) => $"{a} ";
            DVariant <object, object> dObjectObject = dObjectString;
            DVariant <string, string> dStringString = dObjectString;
            DVariant <string, object> dStringObject = dObjectString;
        }