{"id":233,"date":"2019-05-16T02:19:55","date_gmt":"2019-05-16T02:19:55","guid":{"rendered":"http:\/\/windows.emacslisp.com\/?p=233"},"modified":"2019-05-16T02:21:36","modified_gmt":"2019-05-16T02:21:36","slug":"interface-vs-interface","status":"publish","type":"post","link":"http:\/\/windows.emacslisp.com\/index.php\/2019\/05\/16\/interface-vs-interface\/","title":{"rendered":"Interface out T vs T"},"content":{"rendered":"<p>The out keyword in generics is used to denote that the type T in the interface is covariant.<\/p>\n<p>check following code.<\/p>\n<pre lang=\"csharp\" line=\"1\"> \r\n\r\n        class Fruit { }\r\n\r\n        class Banana : Fruit { }\r\n\r\n        interface ICovariantSkinned<out T> { }\r\n\r\n        interface ISkinned<T> { }\r\n\r\n        class A<T> : ISkinned<T> { }\r\n        class B<T> : ICovariantSkinned<T> { }\r\n\r\n        public static void Main()\r\n        {\r\n            ISkinned<Banana> a1 = new A<Banana>();\r\n            ISkinned<Fruit> a = a1;    \/\/ compiling error happens here\r\n\r\n            ICovariantSkinned<Banana> b1 = new B<Banana>();\r\n            ICovariantSkinned<Fruit> b = b1; \/\/ compiling passed\r\n        }\r\n\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>The out keyword in generics is used to denote that the type T in the interface is covariant. check following code. class Fruit { } class Banana : Fruit { } interface ICovariantSkinned { } interface ISkinned { } class &hellip; <a href=\"http:\/\/windows.emacslisp.com\/index.php\/2019\/05\/16\/interface-vs-interface\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"_links":{"self":[{"href":"http:\/\/windows.emacslisp.com\/index.php\/wp-json\/wp\/v2\/posts\/233"}],"collection":[{"href":"http:\/\/windows.emacslisp.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/windows.emacslisp.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/windows.emacslisp.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/windows.emacslisp.com\/index.php\/wp-json\/wp\/v2\/comments?post=233"}],"version-history":[{"count":4,"href":"http:\/\/windows.emacslisp.com\/index.php\/wp-json\/wp\/v2\/posts\/233\/revisions"}],"predecessor-version":[{"id":237,"href":"http:\/\/windows.emacslisp.com\/index.php\/wp-json\/wp\/v2\/posts\/233\/revisions\/237"}],"wp:attachment":[{"href":"http:\/\/windows.emacslisp.com\/index.php\/wp-json\/wp\/v2\/media?parent=233"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/windows.emacslisp.com\/index.php\/wp-json\/wp\/v2\/categories?post=233"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/windows.emacslisp.com\/index.php\/wp-json\/wp\/v2\/tags?post=233"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}