<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Csharp on Cédric L'homme</title><link>https://l-homme.com/tags/csharp/</link><description>Recent content in Csharp on Cédric L'homme</description><generator>Hugo</generator><language>fr-fr</language><lastBuildDate>Mon, 17 Feb 2020 18:00:05 +0000</lastBuildDate><atom:link href="https://l-homme.com/tags/csharp/index.xml" rel="self" type="application/rss+xml"/><item><title>Comprendre la différence entre new et override en C#</title><link>https://l-homme.com/posts/comprendre-la-difference-entre-new-et-override-en-c/</link><pubDate>Mon, 17 Feb 2020 18:00:05 +0000</pubDate><guid>https://l-homme.com/posts/comprendre-la-difference-entre-new-et-override-en-c/</guid><description>&lt;p&gt;Je reviens parfois à la documentation de base &lt;a href="https://docs.microsoft.com/fr-fr/dotnet/csharp/programming-guide/classes-and-structs/knowing-when-to-use-override-and-new-keywords"&gt;&lt;em&gt;Savoir quand utiliser les mots clés override et new&lt;/em&gt;&lt;/a&gt; quand j&amp;rsquo;ai un doute car cette subtilité du langage peut être source d&amp;rsquo;erreur très compliquée à débusquer.&lt;/p&gt;
&lt;p&gt;Pour résumé avec deux phrases (prenez votre souffle) :&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;override&lt;/strong&gt;&lt;/em&gt; est obligatoirement utilisé sur une méthode &lt;em&gt;abstract&lt;/em&gt; et doit être utilisé (sinon warning du compilateur) sur une méthode &lt;em&gt;virtual&lt;/em&gt;, il indique au compilateur d&amp;rsquo;utiliser la dernière méthode définie (pas de différence sur les types utilisés).&lt;/p&gt;</description></item><item><title>Inline des variables out à partir du C# 7</title><link>https://l-homme.com/posts/inline-des-variables-out-a-partir-du-c-7/</link><pubDate>Tue, 04 Feb 2020 08:59:37 +0000</pubDate><guid>https://l-homme.com/posts/inline-des-variables-out-a-partir-du-c-7/</guid><description>&lt;p&gt;Si vous recevez des avertissements de variable out qui peuvent être inline, vous êtes en C# 7 ou plus.&lt;/p&gt;
&lt;p&gt;Depuis cette version, il n&amp;rsquo;est plus nécessaire de déclarer les variables out avant les appels de méthodes. Vous pouvez les déclarer inline, c&amp;rsquo;est à dire à la volée proche de la déclaration out.&lt;/p&gt;
&lt;p&gt;Elle peut être typée ou implicite avec var.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Avant le C# 7&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;TypeVariable&lt;/span&gt; &lt;span class="n"&gt;resultat&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;MethodeAvecOut&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;out&lt;/span&gt; &lt;span class="n"&gt;resultat&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// A partir du C# 7&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;MethodeAvecOut&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;out&lt;/span&gt; &lt;span class="n"&gt;TypeVariable&lt;/span&gt; &lt;span class="n"&gt;resultat&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;MethodeAvecOut&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;out&lt;/span&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;resultat&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;À voir avec vos équipes si vous aimez lire vos types ou si vous laissez votre IDE préféré vous l&amp;rsquo;afficher à la volée.&lt;/p&gt;</description></item><item><title>Comment lancer un débogueur par programmation en C# ?</title><link>https://l-homme.com/posts/comment-lancer-un-debogueur-par-programmation-en-c/</link><pubDate>Thu, 30 Jan 2020 20:37:06 +0000</pubDate><guid>https://l-homme.com/posts/comment-lancer-un-debogueur-par-programmation-en-c/</guid><description>&lt;p&gt;Si vous faites de la programmation avec des threads, il vous est déjà arrivé de vouloir attacher un débogueur à un process déjà lancé. C&amp;rsquo;est parfois trop long à faire à la main, le traitement est déjà fini, etc.&lt;/p&gt;
&lt;p&gt;Heureusement la &lt;a href="https://docs.microsoft.com/en-us/dotnet/standard/clr"&gt;CLR&lt;/a&gt; sait interpréter certaines fonctions bien pratique !&lt;/p&gt;
&lt;p&gt;Vous pouvez appeler la méthode magique &lt;a href="https://docs.microsoft.com/fr-fr/dotnet/api/system.diagnostics.debugger.launch"&gt;Launch()&lt;/a&gt; :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;System&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Diagnostics&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Debugger&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Launch&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Celle-ci lancera un débogueur pour vous.&lt;/p&gt;
&lt;p&gt;Si vous avez plusieurs versions de Visual Studio installées, on vous demandera même la version que vous voulez utiliser.&lt;/p&gt;</description></item></channel></rss>