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; }
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); }