<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: Coalesce ?? operator in C# 2.0</title>
	<atom:link href="http://kpumuk.info/asp-net/coalesce-operator-in-c-sharp-2-0/feed/" rel="self" type="application/rss+xml" />
	<link>http://kpumuk.info/asp-net/coalesce-operator-in-c-sharp-2-0/</link>
	<description>In my blog I'll try to describe about interesting technologies, my discovery in IT and some useful things about programming.</description>
	<pubDate>Sat, 17 May 2008 04:12:08 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
		<item>
		<title>By: GolDen</title>
		<link>http://kpumuk.info/asp-net/coalesce-operator-in-c-sharp-2-0/#comment-162049</link>
		<dc:creator>GolDen</dc:creator>
		<pubDate>Wed, 30 Nov 2011 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://kpumuk.info/asp-net/coalesce-operator-in-c-sharp-2-0/#comment-162049</guid>
		<description>Хочу попросить автора замечательного  блога написать свое IMHO по поводу кодо-генерирующий шаблонных фреймворков для .NET, типа CodeSmith, SmartCode, SQLNetFramework. Использует ли автор что-то подобное, если да, то что именно, какое мнение сложилось от других продуктов?</description>
		<content:encoded><![CDATA[<p>Хочу попросить автора замечательного  блога написать свое IMHO по поводу кодо-генерирующий шаблонных фреймворков для .NET, типа CodeSmith, SmartCode, SQLNetFramework. Использует ли автор что-то подобное, если да, то что именно, какое мнение сложилось от других продуктов?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Akela</title>
		<link>http://kpumuk.info/asp-net/coalesce-operator-in-c-sharp-2-0/#comment-140967</link>
		<dc:creator>Akela</dc:creator>
		<pubDate>Sat, 30 Nov 2002 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://kpumuk.info/asp-net/coalesce-operator-in-c-sharp-2-0/#comment-140967</guid>
		<description>Простите, но Ваши представления о "функциональности" несколько некорректные о чем вам правильно заметил COTOHA. Лямбда выражения, анонимные функция, замыкания и прочая упомянутая ерунда не являются основными признаками функционального языка. Основное свойство функциональных языков - отсутствие переменных. Именно поэтому C# более Perl (в нем это все есть), нежели Lisp и уж тем более Haskel.

Более того он вообще не имеет определенной коцепции, что ярко доказываетя ??, using и прочим синтаксическим шумом.

Возможно ?? ддя отдельных маргиналов и полезен, хотя и путает код. Но почему тогда нет определения любого оператора, например !? или +!.

Using вообще-то говоря частный случай замыкания. Так почему же он сделан частью языка, а не частью стандартной библиотеки?</description>
		<content:encoded><![CDATA[<p>Простите, но Ваши представления о &#8220;функциональности&#8221; несколько некорректные о чем вам правильно заметил COTOHA. Лямбда выражения, анонимные функция, замыкания и прочая упомянутая ерунда не являются основными признаками функционального языка. Основное свойство функциональных языков - отсутствие переменных. Именно поэтому C# более Perl (в нем это все есть), нежели Lisp и уж тем более Haskel.</p>
<p>Более того он вообще не имеет определенной коцепции, что ярко доказываетя ??, using и прочим синтаксическим шумом.</p>
<p>Возможно ?? ддя отдельных маргиналов и полезен, хотя и путает код. Но почему тогда нет определения любого оператора, например !? или +!.</p>
<p>Using вообще-то говоря частный случай замыкания. Так почему же он сделан частью языка, а не частью стандартной библиотеки?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dmytro Shteflyuk</title>
		<link>http://kpumuk.info/asp-net/coalesce-operator-in-c-sharp-2-0/#comment-140738</link>
		<dc:creator>Dmytro Shteflyuk</dc:creator>
		<pubDate>Wed, 30 Nov 2005 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://kpumuk.info/asp-net/coalesce-operator-in-c-sharp-2-0/#comment-140738</guid>
		<description>Нет, конечно, ничьей смерти я не жду :-) Просто как-то издавно повелось, что часть фич, успешно обкатанных на F#, портируют на C#.

А насчет функциональных возможностей - так, навскидку: 1.1 -&gt; 2.0 (анонимные функции, замыкания) -&gt; 3.5 (лямбда-выражения, анонимные типы [кстати, неизменяемые], linq). Я не говорю, что C# станет полностью функциональным (это, естественно, бред). И не говорю, что F# умрет (тем более его не так давно начали продвигать в массы). Я просто говорю, что C# идет ну никак не сторону Perl.</description>
		<content:encoded><![CDATA[<p>Нет, конечно, ничьей смерти я не жду <img src='http://kpumuk.info/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> Просто как-то издавно повелось, что часть фич, успешно обкатанных на F#, портируют на C#.</p>
<p>А насчет функциональных возможностей - так, навскидку: 1.1 -> 2.0 (анонимные функции, замыкания) -> 3.5 (лямбда-выражения, анонимные типы [кстати, неизменяемые], linq). Я не говорю, что C# станет полностью функциональным (это, естественно, бред). И не говорю, что F# умрет (тем более его не так давно начали продвигать в массы). Я просто говорю, что C# идет ну никак не сторону Perl.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: COTOHA</title>
		<link>http://kpumuk.info/asp-net/coalesce-operator-in-c-sharp-2-0/#comment-140734</link>
		<dc:creator>COTOHA</dc:creator>
		<pubDate>Wed, 30 Nov 2005 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://kpumuk.info/asp-net/coalesce-operator-in-c-sharp-2-0/#comment-140734</guid>
		<description>ну это ж бред :)

F# такой себе мультипарадигмный язык. C# такой себе императивный ОО язык. движутся параллельными курсами и пересекаются только в IL :) 

или ты предполагаешь в (не)далёком будущем смерть(забытие, поглощение) одного из упомянутых языков в пользу другого?</description>
		<content:encoded><![CDATA[<p>ну это ж бред <img src='http://kpumuk.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>F# такой себе мультипарадигмный язык. C# такой себе императивный ОО язык. движутся параллельными курсами и пересекаются только в IL <img src='http://kpumuk.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>или ты предполагаешь в (не)далёком будущем смерть(забытие, поглощение) одного из упомянутых языков в пользу другого?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dmytro Shteflyuk</title>
		<link>http://kpumuk.info/asp-net/coalesce-operator-in-c-sharp-2-0/#comment-140713</link>
		<dc:creator>Dmytro Shteflyuk</dc:creator>
		<pubDate>Sat, 30 Nov 2002 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://kpumuk.info/asp-net/coalesce-operator-in-c-sharp-2-0/#comment-140713</guid>
		<description>Я что хотел сказать, то сказал. Считаю, что C# движется в сторону функциональщины (читай F# [читай Ocaml]).</description>
		<content:encoded><![CDATA[<p>Я что хотел сказать, то сказал. Считаю, что C# движется в сторону функциональщины (читай F# [читай Ocaml]).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: COTOHA</title>
		<link>http://kpumuk.info/asp-net/coalesce-operator-in-c-sharp-2-0/#comment-140710</link>
		<dc:creator>COTOHA</dc:creator>
		<pubDate>Sat, 30 Nov 2002 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://kpumuk.info/asp-net/coalesce-operator-in-c-sharp-2-0/#comment-140710</guid>
		<description>C# куда движется?!? ты чего это? imo ты тут очень ошибаешься. напомню, что функциональный язык избегает состояний и изменяемых объектов. 

ты может что-то другое хотел сказать?</description>
		<content:encoded><![CDATA[<p>C# куда движется?!? ты чего это? imo ты тут очень ошибаешься. напомню, что функциональный язык избегает состояний и изменяемых объектов. </p>
<p>ты может что-то другое хотел сказать?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dmytro Shteflyuk</title>
		<link>http://kpumuk.info/asp-net/coalesce-operator-in-c-sharp-2-0/#comment-140673</link>
		<dc:creator>Dmytro Shteflyuk</dc:creator>
		<pubDate>Tue, 30 Nov 2010 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://kpumuk.info/asp-net/coalesce-operator-in-c-sharp-2-0/#comment-140673</guid>
		<description>Отчего же не восхищаться, если простой и удобный синтаксис делает жизнь проще?

Итак, по порядку.

[cc lang="c#"]
return (int?) ViewState["FirstWidth"] ?? 0;
[/cc]

Насчет непроинициализированного значения переменной -- тут Вы правы. Но если проинициализировать,-- значение 0 попадет во &lt;tt&gt;ViewState&lt;/tt&gt;, что означает увеличение размера страницы. А зачем это нужно, если переменная имеет значение по умолчанию?

[cc lang="c#"]
string name = FirstName ?? LastName ?? "Anonymous";
return Array.Find({FirstName, LastName, "Anonimous"}, NotNull);
[/cc]

Непонятно, чем лучше? Тогда почему бы не писать

[cc lang="c#"]
int sum = System.Int32.Add(2, 3);
[/cc]

Ведь это то же самое.

Насчет Вашего P.S. Тут вообще мрак. Перл никогда не был функциональным языком, а именно в этом направлении движется C#.</description>
		<content:encoded><![CDATA[<p>Отчего же не восхищаться, если простой и удобный синтаксис делает жизнь проще?</p>
<p>Итак, по порядку.</p>
<div class="codecolorer-container c#" style="height:35px;"><div class="codecolorer" style="font-family: monospace;"><span class="kw1">return</span> <span class="br0">&#40;</span><span class="kw4">int</span>?<span class="br0">&#41;</span> ViewState<span class="br0">&#91;</span><span class="st0">&quot;FirstWidth&quot;</span><span class="br0">&#93;</span> ?? <span class="nu0">0</span>;</div></div>
<p>Насчет непроинициализированного значения переменной &#8212; тут Вы правы. Но если проинициализировать,&#8211; значение 0 попадет во <tt>ViewState</tt>, что означает увеличение размера страницы. А зачем это нужно, если переменная имеет значение по умолчанию?</p>
<div class="codecolorer-container c#"><div class="codecolorer" style="font-family: monospace;"><span class="kw4">string</span> name = FirstName ?? LastName ?? <span class="st0">&quot;Anonymous&quot;</span>;<br />
<span class="kw1">return</span> Array.<span class="me1">Find</span><span class="br0">&#40;</span><span class="br0">&#123;</span>FirstName, LastName, <span class="st0">&quot;Anonimous&quot;</span><span class="br0">&#125;</span>, NotNull<span class="br0">&#41;</span>;</div></div>
<p>Непонятно, чем лучше? Тогда почему бы не писать</p>
<div class="codecolorer-container c#" style="height:35px;"><div class="codecolorer" style="font-family: monospace;"><span class="kw4">int</span> sum = System.<span class="me1">Int32</span>.<span class="me1">Add</span><span class="br0">&#40;</span><span class="nu0">2</span>, <span class="nu0">3</span><span class="br0">&#41;</span>;</div></div>
<p>Ведь это то же самое.</p>
<p>Насчет Вашего P.S. Тут вообще мрак. Перл никогда не был функциональным языком, а именно в этом направлении движется C#.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Akela</title>
		<link>http://kpumuk.info/asp-net/coalesce-operator-in-c-sharp-2-0/#comment-140662</link>
		<dc:creator>Akela</dc:creator>
		<pubDate>Mon, 30 Nov 2009 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://kpumuk.info/asp-net/coalesce-operator-in-c-sharp-2-0/#comment-140662</guid>
		<description>Откровенно говоря восхищаться тут нечем

&lt;code lang="c#"&gt;
return (int?) ViewState["FirstWidth"] ?? 0;
&lt;/code&gt;

Очевидно, что начальное значение переменной просто неправильно проинициализировано null и это обязательно выплывет где-нибудь в другом не столь очевидном месте.

&lt;code lang="c#"&gt;
string name = FirstName ?? LastName ?? "Anonymous";
&lt;/code&gt;

Непонятно, чем это лучше

&lt;code lang="c#"&gt;
return Array.Find({FirstName, LastName, "Anonimous"}, NotNull);
&lt;/code&gt;

PS

Прослеживая историю развития С# легко убедиться, что он семимильными шагами движется в сторону Perl, где подобные быстрые операторы уже сыграли злую шутку - зачастую пишутся программы понятные только создателю, да и то не всегда.</description>
		<content:encoded><![CDATA[<p>Откровенно говоря восхищаться тут нечем</p>
<div class="codecolorer-container c#" style="height:35px;"><div class="codecolorer" style="font-family: monospace;"><span class="kw1">return</span> <span class="br0">&#40;</span><span class="kw4">int</span>?<span class="br0">&#41;</span> ViewState<span class="br0">&#91;</span><span class="st0">&quot;FirstWidth&quot;</span><span class="br0">&#93;</span> ?? <span class="nu0">0</span>;</div></div>
<p>Очевидно, что начальное значение переменной просто неправильно проинициализировано null и это обязательно выплывет где-нибудь в другом не столь очевидном месте.</p>
<div class="codecolorer-container c#" style="height:35px;"><div class="codecolorer" style="font-family: monospace;"><span class="kw4">string</span> name = FirstName ?? LastName ?? <span class="st0">&quot;Anonymous&quot;</span>;</div></div>
<p>Непонятно, чем это лучше</p>
<div class="codecolorer-container c#" style="height:35px;"><div class="codecolorer" style="font-family: monospace;"><span class="kw1">return</span> Array.<span class="me1">Find</span><span class="br0">&#40;</span><span class="br0">&#123;</span>FirstName, LastName, <span class="st0">&quot;Anonimous&quot;</span><span class="br0">&#125;</span>, NotNull<span class="br0">&#41;</span>;</div></div>
<p>PS</p>
<p>Прослеживая историю развития С# легко убедиться, что он семимильными шагами движется в сторону Perl, где подобные быстрые операторы уже сыграли злую шутку - зачастую пишутся программы понятные только создателю, да и то не всегда.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: COTOHA</title>
		<link>http://kpumuk.info/asp-net/coalesce-operator-in-c-sharp-2-0/#comment-140423</link>
		<dc:creator>COTOHA</dc:creator>
		<pubDate>Wed, 30 Nov 2005 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://kpumuk.info/asp-net/coalesce-operator-in-c-sharp-2-0/#comment-140423</guid>
		<description>2 lusever

даже не смотря на то, что в JS сделано не совсем то, не ясно в чём “проще”? 
‘&#124;&#124;’ писать проще чем ‘??’, что-ли? :) анекдот прямо:
- ‘&#124;&#124;’ проще чем ‘??’!
- чем проще-то?
- чем ‘??’!</description>
		<content:encoded><![CDATA[<p>2 lusever</p>
<p>даже не смотря на то, что в JS сделано не совсем то, не ясно в чём “проще”?<br />
‘||’ писать проще чем ‘??’, что-ли? <img src='http://kpumuk.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> анекдот прямо:<br />
- ‘||’ проще чем ‘??’!<br />
- чем проще-то?<br />
- чем ‘??’!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dmytro Shteflyuk</title>
		<link>http://kpumuk.info/asp-net/coalesce-operator-in-c-sharp-2-0/#comment-140392</link>
		<dc:creator>Dmytro Shteflyuk</dc:creator>
		<pubDate>Fri, 30 Nov 2001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://kpumuk.info/asp-net/coalesce-operator-in-c-sharp-2-0/#comment-140392</guid>
		<description>2lusever: не совсем правильно. Вот в этом случае JavaScript ведет себя не так, как C# и ruby:

[cc lang="javascript"]
var firstName = "", middleName = false, lastName = 0;
// Тут будет "Anonymous", а в C# и ruby - ""
var name = firstName &#124;&#124; middleName &#124;&#124; lastName &#124;&#124; "Anonymous";
[/cc]

</description>
		<content:encoded><![CDATA[<p>2lusever: не совсем правильно. Вот в этом случае JavaScript ведет себя не так, как C# и ruby:</p>
<div class="codecolorer-container javascript"><div class="codecolorer" style="font-family: monospace;"><span class="kw2">var</span> firstName = <span class="st0">&quot;&quot;</span>, middleName = <span class="kw2">false</span>, lastName = <span class="nu0">0</span>;<br />
<span class="co1">// Тут будет &quot;Anonymous&quot;, а в C# и ruby - &quot;&quot;</span><br />
<span class="kw2">var</span> <span class="kw3">name</span> = firstName || middleName || lastName || <span class="st0">&quot;Anonymous&quot;</span>;</div></div>
]]></content:encoded>
	</item>
</channel>
</rss>
