static void Main()
 {
     // Allowed in C# 4.0
     Pair <Contact> contacts =
         new Pair <Contact>(
             new Contact("Princess Buttercup"),
             new Contact("Inigo Montoya"));
     IReadOnlyPair <PdaItem> pair = contacts;
     PdaItem pdaItem1             = pair.First;
     PdaItem pdaItem2             = pair.Second;
 }
Example #2
0
        public void CovariantTest()
        {
            Pair <EmailContact> contacts = new Pair <EmailContact> {
                First = new EmailContact {
                    Id = 1, EmailAddress = "*****@*****.**"
                },
                Second = new EmailContact {
                    Id = 2, EmailAddress = "*****@*****.**"
                }
            };

            // This assignment would fail if not for the covariant (out T) type parameter.
            // By default, IReadOnlyPair<Email> and Pair<EmailContact> are not convertable.
            IReadOnlyPair <ContactMethod> baseContacts = contacts;

            Assert.Equal(1, baseContacts.First.Id);
            Assert.Equal(2, baseContacts.Second.Id);
        }