Exemple #1
0
        static void Test1()
        {
            //<Snippet19>
            DVariant <String, String> dvariant = (String str) => str + " ";

            dvariant("test");
            //</Snippet19>
        }
Exemple #2
0
 private void Build(DVariant node, Hints hints, CompilerContext ctx)
 {
     cw.Type(Dy.Variant);
     cw.GetMember(node.Name);
     cw.FunPrep(1);
     BuildTupleElements(node.Arguments, node.Location, hints, ctx);
     AddLinePragma(node.Location);
     cw.NewArgs(node.Arguments.Count);
     cw.FunArgNm("values");
     cw.FunCall(1);
 }
Exemple #3
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;
        }
        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;
        }