<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Odious ambiguous overloads, part two</title><link>http://blogs.msdn.com/b/ericlippert/archive/2006/04/06/odious-ambiguous-overloads-part-two.aspx</link><description>There were a number of ideas in the comments for what we should do about the unfortunate situation I described yesterday . We considered all of these options and more. I thought I might talk a bit about the pros and cons of each. 
 I suggested do nothing</description><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>В Инфуфа веруем: диалог</title><link>http://blogs.msdn.com/b/ericlippert/archive/2006/04/06/odious-ambiguous-overloads-part-two.aspx#9692991</link><pubDate>Wed, 03 Jun 2009 23:58:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9692991</guid><dc:creator>Блог Эрика Липперта (перевод)</dc:creator><description>&lt;p&gt;Пользователь: Оператор typeof(T) в C#, по существу, означает &amp;#171;компилятор, сгенерируй некий код, который&lt;/p&gt;
&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9692991" width="1" height="1"&gt;</description></item><item><title>In Foof We Trust: A Dialogue</title><link>http://blogs.msdn.com/b/ericlippert/archive/2006/04/06/odious-ambiguous-overloads-part-two.aspx#9635575</link><pubDate>Fri, 22 May 2009 20:43:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9635575</guid><dc:creator>Fabulous Adventures In Coding</dc:creator><description>&lt;p&gt;User : The typeof(T) operator in C# essentially means “compiler, generate some code that gives me an&lt;/p&gt;
&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9635575" width="1" height="1"&gt;</description></item><item><title>Future Breaking Changes, Part One</title><link>http://blogs.msdn.com/b/ericlippert/archive/2006/04/06/odious-ambiguous-overloads-part-two.aspx#4795630</link><pubDate>Fri, 07 Sep 2007 01:23:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4795630</guid><dc:creator>Fabulous Adventures In Coding</dc:creator><description>&lt;p&gt;We on the C# team hate making breaking changes. As my colleague Neal called out in his article on the&lt;/p&gt;
&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4795630" width="1" height="1"&gt;</description></item><item><title>re: Odious ambiguous overloads, part two</title><link>http://blogs.msdn.com/b/ericlippert/archive/2006/04/06/odious-ambiguous-overloads-part-two.aspx#886149</link><pubDate>Sat, 28 Oct 2006 04:01:22 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:886149</guid><dc:creator>TheMuuj</dc:creator><description>&lt;p&gt;While it would be a hideous hack, you could always add an attribute that controls the order in which the metadata is emitted by the compiler.&lt;/p&gt;
&lt;p&gt;I believe there are some source-order dependencies in C# with regards to field initializers. &amp;nbsp;If you have source-code rules about which order members of a class should appear (alphabetical, for instance) this could be a minor problem.&lt;/p&gt;
&lt;p&gt;An attribute that takes an integer parameter could fix these problems.&lt;/p&gt;
&lt;p&gt;But like I said, it'd be a hideous hack.&lt;/p&gt;
&lt;p&gt;The current behavior needs to be documented and maybe even added to the spec so that other CLR implementations can be compatible.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=886149" width="1" height="1"&gt;</description></item><item><title>re: Odious ambiguous overloads, part two</title><link>http://blogs.msdn.com/b/ericlippert/archive/2006/04/06/odious-ambiguous-overloads-part-two.aspx#570718</link><pubDate>Fri, 07 Apr 2006 14:18:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:570718</guid><dc:creator>Jeroen Frijters</dc:creator><description>One way to disambiguate the interface methods would be to add a modopt to the generic type parameters in the method signature of methods that potentailly clash.&lt;br&gt;&lt;br&gt;I don't think it is a realistic solution, because it would complicate (and break) cross language and cross version scenarios, but it is something worth mentioning.&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=570718" width="1" height="1"&gt;</description></item><item><title>re: Odious ambiguous overloads, part two</title><link>http://blogs.msdn.com/b/ericlippert/archive/2006/04/06/odious-ambiguous-overloads-part-two.aspx#570418</link><pubDate>Fri, 07 Apr 2006 03:18:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:570418</guid><dc:creator>Kyle Lahnakoski</dc:creator><description>&amp;gt; It could be an error to have any explicit implementation of an interface method which matches ambiguously. &amp;nbsp;&amp;gt; This would be a smaller breaking change, but still breaking.&lt;br&gt;&lt;br&gt;I would imagine that the number of explicite implementaions like I1&amp;lt;int&amp;gt; would be rare, if not non-existent.&lt;br&gt;&lt;br&gt;What do any of these breaking changes buy the user though? &amp;nbsp;Not more functionality, but less. &amp;nbsp;Basically we'd be saying &amp;quot;you could do th&amp;gt; It could be an error to have any explicit implementation of an interface method which&lt;br&gt;&amp;gt; matches ambiguously. &amp;nbsp;This would be a smaller breaking change, but still breaking.&lt;br&gt;&lt;br&gt;I would imagine that the number of explicit ambiguous implementations (like I1&amp;lt;int&amp;gt;) would be rare, if not non-existent. &amp;nbsp;Is there much in the C# libraries that breaks with this “functionality” is denied?&lt;br&gt;&lt;br&gt;&amp;gt; What do any of these breaking changes buy the user though? &amp;nbsp;Not more functionality,&lt;br&gt;&amp;gt; but less. &amp;nbsp;Basically we'd be saying &amp;quot;you could do this before, and now you can't, too bad.&amp;quot;&lt;br&gt;&amp;gt; That's a hard sell.&lt;br&gt;&lt;br&gt;Functionality and clarity are a balancing act. &amp;nbsp;Personally, I would categorize this “functionality” as a “gotcha”. &amp;nbsp;It would be crazy-hard to debug such a thing, especially if the implementations are in parent classes, and especially if you are not aware that such craziness could happen. &amp;nbsp;At least the warning you propose indicates a possible random behavior.&lt;br&gt;is before, and now you can't, too bad.&amp;quot; That's a hard sell.&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=570418" width="1" height="1"&gt;</description></item><item><title>re: Odious ambiguous overloads, part two</title><link>http://blogs.msdn.com/b/ericlippert/archive/2006/04/06/odious-ambiguous-overloads-part-two.aspx#570386</link><pubDate>Fri, 07 Apr 2006 02:15:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:570386</guid><dc:creator>Eric Lippert</dc:creator><description>Sure, we'll have a talk with the CLR folks and see if a future version of the CLR can get this feature added.&lt;br&gt;&lt;br&gt;And no, of course I didn't decide this by myself! &amp;nbsp;I wrote a detailed analysis of the bug and sent it off to Anders and Mads and Don Box and a whole pile of other people who are part of the standardization process, and took guidance from them. &amp;nbsp;And the guidance was that if possible, the standard and implementation should be emended to read that unification is dejure, and if not, we'll issue a warning and stay broken until it is practical to fix the problem. &amp;nbsp;There's absolutely no point in changing the standard if it's _impossible_ for the implementation to comply! &amp;nbsp;It's better to just leave it implementation-defined behaviour in this regrettable scenario.&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=570386" width="1" height="1"&gt;</description></item><item><title>re: Odious ambiguous overloads, part two</title><link>http://blogs.msdn.com/b/ericlippert/archive/2006/04/06/odious-ambiguous-overloads-part-two.aspx#570300</link><pubDate>Fri, 07 Apr 2006 00:29:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:570300</guid><dc:creator>James Mastros</dc:creator><description>Er, you really mean that you added a warning, and pushed a request to be able to tell them apart to the CLR metadata folks, because sometimes all you can do is add a warning, and push it to the guys who can really fix it, right?&lt;br&gt;&lt;br&gt;Or did you just add a warning, and mark the bug FIXED when it isn't really?&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=570300" width="1" height="1"&gt;</description></item><item><title>re: Odious ambiguous overloads, part two</title><link>http://blogs.msdn.com/b/ericlippert/archive/2006/04/06/odious-ambiguous-overloads-part-two.aspx#570232</link><pubDate>Thu, 06 Apr 2006 22:49:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:570232</guid><dc:creator>James</dc:creator><description>I'm intrigued - did you decide what to do by yourself, or solicit guidance from your ECMA buddies? C# is a standard, you know. Is it fair to just do your own thing then run it through the process afterwards?&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=570232" width="1" height="1"&gt;</description></item></channel></rss>