<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Форум 'Библиотека CodeJam' на RSDN</title>
    <link>http://rsdn.org/Forum/prj.codejam/</link>
    <description>Обсуждение всего что связано с библиотекой CodeJam</description>
    <category>prj</category>
    <category>codejam</category>
    <language>ru-ru</language>
    <copyright>Copyright ©, RSDN, 2001-2007</copyright>
    <webMaster>forum@rsdn.org</webMaster>
    <generator>RSDN RSS Generator 1.3</generator>
    <image>
      <url>http://rsdn.org/rsdn.gif</url>
      <title>RSDN</title>
      <link>http://rsdn.org</link>
    </image>
    <lastBuildDate>Fri, 24 Apr 2026 08:38:35 GMT</lastBuildDate>
    <ttl>5</ttl>
	<item>
		<title>ReaderWriterLockSlimExtensions.ReadLockScope.Dispose</title>
		<link>http://rsdn.org/Forum/prj.codejam/8426364.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/prj.codejam/8426364</guid>
		<comments>http://rsdn.org/Forum/prj.codejam/8426364</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8426364</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8426364</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8426364</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;&lt;pre class='c'&gt;&lt;code&gt;&lt;span class='kw'&gt;public static class&lt;/span&gt; ReaderWriterLockSlimExtensions

&lt;span class='kw'&gt;public struct&lt;/span&gt; ReadLockScope : IDisposable
{
    &lt;span class='kw'&gt;private&lt;/span&gt; ReaderWriterLockSlim? _readerWriterLock;

    [DebuggerStepThrough]
    &lt;span class='kw'&gt;internal&lt;/span&gt; ReadLockScope(ReaderWriterLockSlim readerWriterLock)
    {
        Code.NotNull(readerWriterLock, &lt;span class='str'&gt;"readerWriterLock"&lt;/span&gt;);
        _readerWriterLock = readerWriterLock;
    }

    [DebuggerStepThrough]
    &lt;span class='kw'&gt;public void&lt;/span&gt; Dispose()
    {
&lt;b&gt;        _readerWriterLock?.EnterReadLock();
&lt;/b&gt;        _readerWriterLock = &lt;span class='kw'&gt;null&lt;/span&gt;;
    }
}&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Очепятка, должно быть &lt;b&gt;ExitReadLock&lt;/b&gt;.&lt;/div&gt;
				
		</description>
		
		<category>prj</category><category>codejam</category>
		<pubDate>Mon, 12 Dec 2022 08:30:40 GMT</pubDate>
		
			<author>swimmers &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>1</slash:comments>
		
	</item>

	<item>
		<title>DI extensions</title>
		<link>http://rsdn.org/Forum/prj.codejam/8310178.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/prj.codejam/8310178</guid>
		<comments>http://rsdn.org/Forum/prj.codejam/8310178</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8310178</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8310178</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8310178</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Понадобился тут метод &amp;mdash; &lt;a class="github m" href="https://github.com/dotnet/runtime/issues/36021#issuecomment-816020402" target="_blank"&gt;https://github.com/dotnet/runtime/issues/36021#issuecomment-816020402&lt;/a&gt;&lt;br /&gt;
Неплохо было бы добавить его в CJ, но он зависит от Microsoft.Extensions.DependencyInjection.Abstractions&lt;br /&gt;
Посему есть идея добавить еще один пакет &amp;mdash; CodeJam.DependencyInjection (поддерживаемые рантаймы FW 4.6.1+, NetStd 2.0+, Core 3.1+)&lt;br /&gt;
Вопросы:&lt;br /&gt;
1. Есть возражения?&lt;br /&gt;
2. Что еще туда добавить?&lt;/div&gt;
				
		</description>
		
		<category>prj</category><category>codejam</category>
		<pubDate>Thu, 07 Jul 2022 10:30:52 GMT</pubDate>
		
			<author>AndrewVK &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>0</slash:comments>
		
	</item>

	<item>
		<title>4.0.0</title>
		<link>http://rsdn.org/Forum/prj.codejam/8081593.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/prj.codejam/8081593</guid>
		<comments>http://rsdn.org/Forum/prj.codejam/8081593</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8081593</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8081593</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8081593</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;&lt;blockquote class='q'&gt;&lt;p&gt;What's new in 4.0.0&lt;br /&gt;
-------------------------&lt;br /&gt;
&amp;mdash; Breaking changes:&lt;br /&gt;
  * AdjustTimeout behaves as user would expect.&lt;br /&gt;
  * Original AdjustTimeout renamed to AdjustAndLimitTimeout&lt;br /&gt;
  * Added nullability annotations to serveral methods in old .NET versions even if they don't match the base interfaces&lt;br /&gt;
* Nullability improvements&lt;br /&gt;
* Added Code.NotNullNorEmptyAndItemNotNull&lt;br /&gt;
* Add C# nullability markup.&lt;br /&gt;
* Remove JetBrains nullability markup: NotNull/CanBeNull/ItemNotNull.&lt;br /&gt;
* Remove deprecated targets. Supporting: .NET 3.5+, .NET Standard 2.0+, .NET Core 3.1+.&lt;br /&gt;
* Fixed Range string representation bug.&lt;br /&gt;
* Refactoring &amp;amp; code cleanup&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;
				
		</description>
		
		<category>prj</category><category>codejam</category>
		<pubDate>Mon, 30 Aug 2021 14:24:59 GMT</pubDate>
		
			<author>AndrewVK &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>0</slash:comments>
		
	</item>

	<item>
		<title>MinBy/MaxBy</title>
		<link>http://rsdn.org/Forum/prj.codejam/8029027.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/prj.codejam/8029027</guid>
		<comments>http://rsdn.org/Forum/prj.codejam/8029027</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=8029027</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/8029027</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=8029027</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Заметил тут, что MinBy,MaxBy игнорируют null значение в отличии от Enumerable.Min, Enumerable.Max.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;&lt;span class='kw'&gt;var&lt;/span&gt; a = &lt;span class='kw'&gt;new string&lt;/span&gt;?[] { &lt;span class='kw'&gt;null&lt;/span&gt; };

a.Min() &lt;span class='com'&gt;// null&lt;/span&gt;
a.MinBy(x =&amp;gt; x) &lt;span class='com'&gt;// исключение, пустая коллекция&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Это задумано, что поведение отличается или таки ошибка ?&lt;/div&gt;
				
		</description>
		
		<category>prj</category><category>codejam</category>
		<pubDate>Sun, 13 Jun 2021 04:28:24 GMT</pubDate>
		
			<author>_NN_ &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>1</slash:comments>
		
	</item>

	<item>
		<title>3.3.1</title>
		<link>http://rsdn.org/Forum/prj.codejam/7950271.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/prj.codejam/7950271</guid>
		<comments>http://rsdn.org/Forum/prj.codejam/7950271</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=7950271</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/7950271</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=7950271</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;&lt;blockquote class='q'&gt;&lt;p&gt;What's new in 3.3.1&lt;br /&gt;
-------------------&lt;br /&gt;
	* Fix StreamExtensions.ReadAsByteArray (non-seekable stream support)&lt;br /&gt;
&lt;br /&gt;
What's new in 3.3.0&lt;br /&gt;
-------------------&lt;br /&gt;
* Add more string Invariant and Ordinal methods.&lt;br /&gt;
* Add value annotations.&lt;br /&gt;
* Add WaitTaskAsync extension method&lt;br /&gt;
* Upgrade to Theraot.Core 3.2.0 which fixes many issues in old .NET Frameworks.&lt;br /&gt;
* Code cleanup&lt;br /&gt;
&lt;br /&gt;
What's new in 3.2.0&lt;br /&gt;
-------------------&lt;br /&gt;
* CreateSingle performance improvements&lt;br /&gt;
* Additional Stream helper methods&lt;br /&gt;
* Configuration API and retry policy for temporary data helpers&lt;br /&gt;
* ToCompositeRangeExclusive method&lt;br /&gt;
* StringBuilder IsNullOrEmpty/NotNullNorEmpty methods&lt;br /&gt;
* ForEachAsync method&lt;br /&gt;
* Refactoring, fixes and and code cleanup&lt;br /&gt;
&lt;br /&gt;
What's new in 3.1.0&lt;br /&gt;
-------------------&lt;br /&gt;
* Return missing Jetbrains annotations&lt;br /&gt;
* One argument enumerable deconstruct&lt;br /&gt;
&lt;br /&gt;
What's new in 3.0.1&lt;br /&gt;
-------------------&lt;br /&gt;
* IsAssignableTo() reflection helper.&lt;br /&gt;
* Deconstruct methods for arrays, lists and enumerables (to support positional pattern).&lt;br /&gt;
* !Breaking change!: EnumHelper.GetFlagsMask() replaced with EnumHelper.GetValuesMask() method.&lt;br /&gt;
* Algorithms.MinMax(). Math.Min/Max() for any comparable type.&lt;br /&gt;
* EnumHelper.GetDefinedFlags(value).&lt;br /&gt;
* EnumHelper.ToFlags(value) extension method.&lt;br /&gt;
* Code cleanup.&lt;br /&gt;
* WaitForCancellationAsync() extension method.&lt;br /&gt;
* TimeoutHelper class.&lt;br /&gt;
* WithTimeout() methods.&lt;br /&gt;
* Connection string parser/formatter class&lt;br /&gt;
* IsBrowsable/IsCompilerGenerated reflection helpers&lt;br /&gt;
* Code.NotDefault assertion&lt;br /&gt;
* DateTime[Offset].Round method&lt;br /&gt;
* Disposable.DisposeAsync method&lt;br /&gt;
* TimeSpanHelpers class&lt;br /&gt;
* CancellationToken.WhenCancelled method&lt;br /&gt;
* Core 3.0 and 3.1 support&lt;br /&gt;
* Move ToHashSet() and GetValueOrDefault() to separate namespace to prevent conflicts&lt;br /&gt;
* Platform targeting reworked&lt;br /&gt;
* Assertions revisited&lt;br /&gt;
* DateTime[Offset] related assertions and extensions&lt;br /&gt;
* Symbols package added&lt;br /&gt;
* Refactoring, fixes and and code cleanup&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;
				
		</description>
		
		<category>prj</category><category>codejam</category>
		<pubDate>Sat, 13 Feb 2021 13:45:02 GMT</pubDate>
		
			<author>AndrewVK &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>0</slash:comments>
		
	</item>

	<item>
		<title>4.0.0 beta1</title>
		<link>http://rsdn.org/Forum/prj.codejam/7939323.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/prj.codejam/7939323</guid>
		<comments>http://rsdn.org/Forum/prj.codejam/7939323</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=7939323</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/7939323</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=7939323</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;&lt;blockquote class='q'&gt;&lt;p&gt;What's new in 4.0.0-beta1&lt;br /&gt;
-------------------------&lt;br /&gt;
* Add C# nullability markup.&lt;br /&gt;
* Remove JetBrains nullability markup: NotNull/CanBeNull/ItemNotNull.&lt;br /&gt;
* Remove deprecated targets. Supporting: .NET 3.5+, .NET Standard 2.0+, .NET Core 3.1+.&lt;br /&gt;
* Fixed Range string representation bug.&lt;br /&gt;
* Refactoring &amp;amp; code cleanup&lt;/p&gt;&lt;/blockquote&gt;
&lt;a class="m" href="https://www.nuget.org/packages/CodeJam/4.0.0-beta1" target="_blank"&gt;https://www.nuget.org/packages/CodeJam/4.0.0-beta1&lt;/a&gt;&lt;/div&gt;
				
		</description>
		
		<category>prj</category><category>codejam</category>
		<pubDate>Sat, 30 Jan 2021 11:46:42 GMT</pubDate>
		
			<author>AndrewVK &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>13</slash:comments>
		
	</item>

	<item>
		<title>3.3.0</title>
		<link>http://rsdn.org/Forum/prj.codejam/7887464.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/prj.codejam/7887464</guid>
		<comments>http://rsdn.org/Forum/prj.codejam/7887464</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=7887464</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/7887464</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=7887464</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;&lt;blockquote class='q'&gt;&lt;p&gt;What's new in 3.3.0&lt;br /&gt;
-------------------&lt;br /&gt;
* Add more string Invariant and Ordinal methods.&lt;br /&gt;
* Add value annotations.&lt;br /&gt;
* Add WaitTaskAsync extension method&lt;br /&gt;
* Upgrade to Theraot.Core 3.2.0 which fixes many issues in old .NET Frameworks.&lt;br /&gt;
* Code cleanup&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;
				
		</description>
		
		<category>prj</category><category>codejam</category>
		<pubDate>Fri, 20 Nov 2020 22:05:04 GMT</pubDate>
		
			<author>AndrewVK &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>0</slash:comments>
		
	</item>

	<item>
		<title>ConfigureAwait(false)</title>
		<link>http://rsdn.org/Forum/prj.codejam/7844805.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/prj.codejam/7844805</guid>
		<comments>http://rsdn.org/Forum/prj.codejam/7844805</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=7844805</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/7844805</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=7844805</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Заметил, что не используется особо в библиотеке.&lt;br /&gt;
Это случайно или намеренно ?&lt;/div&gt;
				
		</description>
		
		<category>prj</category><category>codejam</category>
		<pubDate>Sat, 03 Oct 2020 09:41:07 GMT</pubDate>
		
			<author>_NN_ &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>11</slash:comments>
		
	</item>

	<item>
		<title>3.2.0</title>
		<link>http://rsdn.org/Forum/prj.codejam/7816388.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/prj.codejam/7816388</guid>
		<comments>http://rsdn.org/Forum/prj.codejam/7816388</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=7816388</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/7816388</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=7816388</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;&lt;blockquote class='q'&gt;&lt;p&gt;What's new in 3.2.0&lt;br /&gt;
-------------------&lt;br /&gt;
* CreateSingle performance improvements&lt;br /&gt;
* Additional Stream helper methods&lt;br /&gt;
* Configuration API and retry policy for temporary data helpers&lt;br /&gt;
* ToCompositeRangeExclusive method&lt;br /&gt;
* StringBuilder IsNullOrEmpty/NotNullNorEmpty methods&lt;br /&gt;
* ForEachAsync method&lt;br /&gt;
* Refactoring, fixes and and code cleanup&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;
				
		</description>
		
		<category>prj</category><category>codejam</category>
		<pubDate>Sun, 30 Aug 2020 19:06:12 GMT</pubDate>
		
			<author>AndrewVK &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>0</slash:comments>
		
	</item>

	<item>
		<title>3.1.1</title>
		<link>http://rsdn.org/Forum/prj.codejam/7812231.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/prj.codejam/7812231</guid>
		<comments>http://rsdn.org/Forum/prj.codejam/7812231</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=7812231</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/7812231</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=7812231</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Можно ли выпустить обновление библиотеки ?&lt;/div&gt;
				
		</description>
		
		<category>prj</category><category>codejam</category>
		<pubDate>Tue, 25 Aug 2020 13:39:45 GMT</pubDate>
		
			<author>_NN_ &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>4</slash:comments>
		
	</item>

	<item>
		<title>Итераторы</title>
		<link>http://rsdn.org/Forum/prj.codejam/7754710.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/prj.codejam/7754710</guid>
		<comments>http://rsdn.org/Forum/prj.codejam/7754710</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=7754710</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/7754710</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=7754710</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Приветствую!&lt;br /&gt;
&lt;br /&gt;
Хотел использовать в проекте расширение EnumerableExtensions.Concat&amp;lt;T&amp;gt;(this IEnumerable&amp;lt;T&amp;gt; source, T element).&lt;br /&gt;
Посмотрел реализацию: появилось подозрение, что они делают обход коллекции неэффективно.&lt;br /&gt;
&lt;br /&gt;
Набросал свою реализацию.&lt;br /&gt;
Код и результаты ниже.&lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;    [SimpleJob(RuntimeMoniker.Net472)]
    [SimpleJob(RuntimeMoniker.NetCoreApp22)]
    &lt;span class='kw'&gt;public class&lt;/span&gt; ConcatBenchmark
    {
        &lt;span class='kw'&gt;private const int&lt;/span&gt; N = 3000000;
        &lt;span class='kw'&gt;public int&lt;/span&gt;[] startInt = Enumerable.Repeat(1, N).ToArray();
        &lt;span class='kw'&gt;public long&lt;/span&gt;[] startLong = Enumerable.Repeat(1l, N).ToArray();
        &lt;span class='kw'&gt;public string&lt;/span&gt;[] startStr = Enumerable.Repeat(1, N).Select(i =&amp;gt; i.ToString()).ToArray();

        [Benchmark]
        &lt;span class='kw'&gt;public int&lt;/span&gt; ReferenceCodeJam() =&amp;gt; &lt;span class='kw'&gt;this&lt;/span&gt;.startStr.Concat(&lt;span class='str'&gt;""&lt;/span&gt;).Count();

        [Benchmark]
        &lt;span class='kw'&gt;public int&lt;/span&gt; ReferenceMy() =&amp;gt; Concat(&lt;span class='kw'&gt;this&lt;/span&gt;.startStr, &lt;span class='str'&gt;""&lt;/span&gt;).Count();

        [Benchmark]
        &lt;span class='kw'&gt;public int&lt;/span&gt; Referencex5CodeJam() =&amp;gt; &lt;span class='kw'&gt;this&lt;/span&gt;.startStr.Concat(&lt;span class='str'&gt;""&lt;/span&gt;).Concat(&lt;span class='str'&gt;""&lt;/span&gt;).Concat(&lt;span class='str'&gt;""&lt;/span&gt;).Concat(&lt;span class='str'&gt;""&lt;/span&gt;).Concat(&lt;span class='str'&gt;""&lt;/span&gt;).Count();

        [Benchmark]
        &lt;span class='kw'&gt;public int&lt;/span&gt; Referencex5My() =&amp;gt; Concat(Concat(Concat(Concat(Concat(&lt;span class='kw'&gt;this&lt;/span&gt;.startStr, &lt;span class='str'&gt;""&lt;/span&gt;), &lt;span class='str'&gt;""&lt;/span&gt;), &lt;span class='str'&gt;""&lt;/span&gt;), &lt;span class='str'&gt;""&lt;/span&gt;), &lt;span class='str'&gt;""&lt;/span&gt;).Count();
        
        
        [Benchmark]
        &lt;span class='kw'&gt;public int&lt;/span&gt; intCodeJam() =&amp;gt; &lt;span class='kw'&gt;this&lt;/span&gt;.startInt.Concat(N).Sum();

        [Benchmark]
        &lt;span class='kw'&gt;public int&lt;/span&gt; intMy() =&amp;gt; Concat(&lt;span class='kw'&gt;this&lt;/span&gt;.startInt, N).Sum();

        [Benchmark]
        &lt;span class='kw'&gt;public int&lt;/span&gt; intx5CodeJam() =&amp;gt; &lt;span class='kw'&gt;this&lt;/span&gt;.startInt.Concat(N).Concat(N).Concat(N).Concat(N).Concat(N).Sum();

        [Benchmark]
        &lt;span class='kw'&gt;public int&lt;/span&gt; intx5My() =&amp;gt; Concat(Concat(Concat(Concat(Concat(&lt;span class='kw'&gt;this&lt;/span&gt;.startInt, N), N), N), N), N).Sum();


        [Benchmark]
        &lt;span class='kw'&gt;public long&lt;/span&gt; longCodeJam() =&amp;gt; &lt;span class='kw'&gt;this&lt;/span&gt;.startLong.Concat(N).Sum();

        [Benchmark]
        &lt;span class='kw'&gt;public long&lt;/span&gt; longMy() =&amp;gt; Concat(&lt;span class='kw'&gt;this&lt;/span&gt;.startLong, N).Sum();

        [Benchmark]
        &lt;span class='kw'&gt;public long&lt;/span&gt; longx5CodeJam() =&amp;gt; &lt;span class='kw'&gt;this&lt;/span&gt;.startLong.Concat(N).Concat(N).Concat(N).Concat(N).Concat(N).Sum();

        [Benchmark]
        &lt;span class='kw'&gt;public long&lt;/span&gt; longx5My() =&amp;gt; Concat(Concat(Concat(Concat(Concat(&lt;span class='kw'&gt;this&lt;/span&gt;.startLong, N), N), N), N), N).Sum();


        &lt;span class='kw'&gt;public class&lt;/span&gt; ConcatEnumerator&amp;lt;T&amp;gt; : IEnumerator&amp;lt;T&amp;gt;
        {
            &lt;span class='kw'&gt;private&lt;/span&gt; State state;

            &lt;span class='kw'&gt;private&lt;/span&gt; IEnumerator&amp;lt;T&amp;gt; start;

            &lt;span class='kw'&gt;private readonly&lt;/span&gt; T last;

            &lt;span class='kw'&gt;public&lt;/span&gt; ConcatEnumerator(IEnumerator&amp;lt;T&amp;gt; start, T last)
            {
                &lt;span class='kw'&gt;this&lt;/span&gt;.state = State.ConsumingFirst;
                &lt;span class='kw'&gt;this&lt;/span&gt;.start = start;
                &lt;span class='kw'&gt;this&lt;/span&gt;.last = last;
            }

            &lt;span class='kw'&gt;public void&lt;/span&gt; Dispose()
            {
            }

            &lt;span class='kw'&gt;public&lt;/span&gt; Boolean MoveNext()
            {
                &lt;span class='kw'&gt;switch&lt;/span&gt; (&lt;span class='kw'&gt;this&lt;/span&gt;.state)
                {
                    &lt;span class='kw'&gt;case&lt;/span&gt; State.ConsumingFirst:
                        &lt;span class='kw'&gt;if&lt;/span&gt; (&lt;span class='kw'&gt;this&lt;/span&gt;.start.MoveNext())
                        {
                            &lt;span class='kw'&gt;return true&lt;/span&gt;;
                        }
                        &lt;span class='kw'&gt;else&lt;/span&gt;
                        {
                            &lt;span class='kw'&gt;this&lt;/span&gt;.state = State.StartConsumed;
                            &lt;span class='kw'&gt;return true&lt;/span&gt;;
                        }

                    &lt;span class='kw'&gt;case&lt;/span&gt; State.StartConsumed:
                        &lt;span class='kw'&gt;this&lt;/span&gt;.state = State.Empty;
                        &lt;span class='kw'&gt;return false&lt;/span&gt;;
                }

                &lt;span class='kw'&gt;return false&lt;/span&gt;;
            }

            &lt;span class='kw'&gt;public void&lt;/span&gt; Reset()
            {
                &lt;span class='kw'&gt;this&lt;/span&gt;.start.Reset();
                &lt;span class='kw'&gt;this&lt;/span&gt;.state = State.ConsumingFirst;
            }

            &lt;span class='kw'&gt;public&lt;/span&gt; T Current
            {
                &lt;span class='kw'&gt;get&lt;/span&gt;
                {
                    &lt;span class='kw'&gt;switch&lt;/span&gt; (&lt;span class='kw'&gt;this&lt;/span&gt;.state)
                    {
                        &lt;span class='kw'&gt;case&lt;/span&gt; State.ConsumingFirst:
                            &lt;span class='kw'&gt;return this&lt;/span&gt;.start.Current;

                        &lt;span class='kw'&gt;case&lt;/span&gt; State.StartConsumed:
                            &lt;span class='kw'&gt;return this&lt;/span&gt;.last;

                        &lt;span class='kw'&gt;default&lt;/span&gt;:
                            &lt;span class='kw'&gt;throw new&lt;/span&gt; InvalidOperationException();
                    }
                }
            }

            Object IEnumerator.Current =&amp;gt; &lt;span class='kw'&gt;this&lt;/span&gt;.Current;

            &lt;span class='kw'&gt;enum&lt;/span&gt; State
            {
                ConsumingFirst,

                StartConsumed,

                Empty
            }
        }

        &lt;span class='kw'&gt;public class&lt;/span&gt; ConcatEnumerable&amp;lt;T&amp;gt; : IEnumerable&amp;lt;T&amp;gt;
        {
            &lt;span class='kw'&gt;private&lt;/span&gt; IEnumerable&amp;lt;T&amp;gt; start;

            &lt;span class='kw'&gt;private readonly&lt;/span&gt; T last;

            &lt;span class='kw'&gt;public&lt;/span&gt; ConcatEnumerable(IEnumerable&amp;lt;T&amp;gt; start, T last)
            {
                &lt;span class='kw'&gt;this&lt;/span&gt;.start = start;
                &lt;span class='kw'&gt;this&lt;/span&gt;.last = last;
            }

            &lt;span class='kw'&gt;public&lt;/span&gt; IEnumerator&amp;lt;T&amp;gt; GetEnumerator()
            {
                &lt;span class='kw'&gt;return new&lt;/span&gt; ConcatEnumerator&amp;lt;T&amp;gt;(&lt;span class='kw'&gt;this&lt;/span&gt;.start.GetEnumerator(), &lt;span class='kw'&gt;this&lt;/span&gt;.last);
            }

            IEnumerator IEnumerable.GetEnumerator()
            {
                &lt;span class='kw'&gt;return this&lt;/span&gt;.GetEnumerator();
            }
        }

        &lt;span class='kw'&gt;public static&lt;/span&gt; IEnumerable&amp;lt;T&amp;gt; Concat&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt; first, T last)
        {
            &lt;span class='kw'&gt;return new&lt;/span&gt; ConcatEnumerable&amp;lt;T&amp;gt;(first, last);
        }
    }&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;BenchmarkDotNet=v0.12.1, OS=Windows 10.0.18363.836 (1909/November2018Update/19H2)
Intel Core i7-10710U CPU 1.10GHz, 1 CPU, 12 logical and 6 physical cores
.NET Core SDK=2.2.106
  [Host]        : .NET Core 2.2.4 (CoreCLR 4.6.27521.02, CoreFX 4.6.27521.01), X64 RyuJIT
  .NET 4.7.2    : .NET Framework 4.8 (4.8.4180.0), X64 RyuJIT
  .NET Core 2.2 : .NET Core 2.2.4 (CoreCLR 4.6.27521.02, CoreFX 4.6.27521.01), X64 RyuJIT


|             Method |           Job |       Runtime |      Mean |    Error |   StdDev |    Median |
|------------------- |-------------- |-------------- |----------:|---------:|---------:|----------:|
|   ReferenceCodeJam |    .NET 4.7.2 |    .NET 4.7.2 |  34.36 ms | 1.132 ms | 3.247 ms |  33.16 ms |
|        ReferenceMy |    .NET 4.7.2 |    .NET 4.7.2 |  15.28 ms | 0.359 ms | 1.037 ms |  14.76 ms |
| Referencex5CodeJam |    .NET 4.7.2 |    .NET 4.7.2 | 157.93 ms | 0.961 ms | 0.852 ms | 157.82 ms |
|      Referencex5My |    .NET 4.7.2 |    .NET 4.7.2 |  53.54 ms | 1.066 ms | 1.923 ms |  52.89 ms |
|         intCodeJam |    .NET 4.7.2 |    .NET 4.7.2 |  33.20 ms | 0.633 ms | 0.561 ms |  33.07 ms |
|              intMy |    .NET 4.7.2 |    .NET 4.7.2 |  26.45 ms | 0.251 ms | 0.209 ms |  26.42 ms |
|       intx5CodeJam |    .NET 4.7.2 |    .NET 4.7.2 | 119.49 ms | 2.170 ms | 1.695 ms | 119.04 ms |
|            intx5My |    .NET 4.7.2 |    .NET 4.7.2 |  87.00 ms | 1.227 ms | 1.148 ms |  86.95 ms |
|        longCodeJam |    .NET 4.7.2 |    .NET 4.7.2 |  32.32 ms | 0.283 ms | 0.251 ms |  32.30 ms |
|             longMy |    .NET 4.7.2 |    .NET 4.7.2 |  28.16 ms | 0.202 ms | 0.189 ms |  28.10 ms |
|      longx5CodeJam |    .NET 4.7.2 |    .NET 4.7.2 | 118.99 ms | 1.045 ms | 0.978 ms | 118.84 ms |
|           longx5My |    .NET 4.7.2 |    .NET 4.7.2 |  89.98 ms | 1.082 ms | 0.904 ms |  90.05 ms |
|   ReferenceCodeJam | .NET Core 2.2 | .NET Core 2.2 |  32.73 ms | 0.438 ms | 0.388 ms |  32.81 ms |
|        ReferenceMy | .NET Core 2.2 | .NET Core 2.2 |  15.08 ms | 0.098 ms | 0.092 ms |  15.05 ms |
| Referencex5CodeJam | .NET Core 2.2 | .NET Core 2.2 | 166.51 ms | 3.323 ms | 3.955 ms | 165.46 ms |
|      Referencex5My | .NET Core 2.2 | .NET Core 2.2 |  51.68 ms | 0.361 ms | 0.320 ms |  51.69 ms |
|         intCodeJam | .NET Core 2.2 | .NET Core 2.2 |  35.83 ms | 0.311 ms | 0.275 ms |  35.74 ms |
|              intMy | .NET Core 2.2 | .NET Core 2.2 |  31.74 ms | 0.625 ms | 0.522 ms |  31.60 ms |
|       intx5CodeJam | .NET Core 2.2 | .NET Core 2.2 | 123.43 ms | 0.978 ms | 0.867 ms | 123.31 ms |
|            intx5My | .NET Core 2.2 | .NET Core 2.2 |  98.99 ms | 0.880 ms | 0.780 ms |  98.77 ms |
|        longCodeJam | .NET Core 2.2 | .NET Core 2.2 |  34.29 ms | 0.303 ms | 0.283 ms |  34.36 ms |
|             longMy | .NET Core 2.2 | .NET Core 2.2 |  30.74 ms | 0.154 ms | 0.128 ms |  30.77 ms |
|      longx5CodeJam | .NET Core 2.2 | .NET Core 2.2 | 124.48 ms | 2.454 ms | 2.826 ms | 123.33 ms |
|           longx5My | .NET Core 2.2 | .NET Core 2.2 | 101.79 ms | 0.816 ms | 0.763 ms | 101.74 ms |&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
				
		</description>
		
		<category>prj</category><category>codejam</category>
		<pubDate>Tue, 16 Jun 2020 06:49:45 GMT</pubDate>
		
			<author>StatujaLeha &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>3</slash:comments>
		
	</item>

	<item>
		<title>ToDictionary()</title>
		<link>http://rsdn.org/Forum/prj.codejam/7753504.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/prj.codejam/7753504</guid>
		<comments>http://rsdn.org/Forum/prj.codejam/7753504</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=7753504</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/7753504</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=7753504</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Вопрос, стоит ли добавить такой метод расширения ?&lt;br /&gt;
&lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;&lt;span class='kw'&gt;public&lt;/span&gt; Dictionary&amp;lt;TKey, TValue&amp;gt; ToDictionary&amp;lt;TKey, TValue&amp;gt;(&lt;span class='kw'&gt;this&lt;/span&gt; IEnumerable&amp;lt;KeyValuePair&amp;lt;TKey, TValue&amp;gt;&amp;gt; dict) =&amp;gt;
  dict.ToDictionary(kv =&amp;gt; kv.Key, kv =&amp;gt; kv.Value);&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Достаёт расписыавть каждый раз когда фильтруешь словарь и создавать его снова.&lt;/div&gt;
				
		</description>
		
		<category>prj</category><category>codejam</category>
		<pubDate>Sun, 14 Jun 2020 07:54:02 GMT</pubDate>
		
			<author>_NN_ &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>6</slash:comments>
		
	</item>

	<item>
		<title>MultiDictionary</title>
		<link>http://rsdn.org/Forum/prj.codejam/7741420.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/prj.codejam/7741420</guid>
		<comments>http://rsdn.org/Forum/prj.codejam/7741420</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=7741420</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/7741420</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=7741420</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Вопрос по поводу добавления коллекции в библиотеку.&lt;br /&gt;
Насколько это уместно добавить в CodeJam или создать отдельный nuget ?&lt;/div&gt;
				
		</description>
		
		<category>prj</category><category>codejam</category>
		<pubDate>Thu, 28 May 2020 11:13:25 GMT</pubDate>
		
			<author>_NN_ &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>1</slash:comments>
		
	</item>

	<item>
		<title>Правильное использование Assert</title>
		<link>http://rsdn.org/Forum/prj.codejam/7730798.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/prj.codejam/7730798</guid>
		<comments>http://rsdn.org/Forum/prj.codejam/7730798</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=7730798</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/7730798</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=7730798</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;В NUnit порядок expected, actual , а не не наоборот.&lt;br /&gt;
В CodeJam частенько вижу неправильный порядок использования.&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class='c'&gt;&lt;code&gt;AreEqual(range.ToInvariantString(), &lt;span class='str'&gt;"[2..9]: { 'Key1':[2..2]; 'Key2':[5..7); 'Key2':(8..9] }"&lt;/span&gt;);
AreEqual(
    range.SubRanges.Select(r =&amp;gt; r.Key).Distinct().Join(&lt;span class='str'&gt;";"&lt;/span&gt;),
    &lt;span class='str'&gt;"Key1;Key2"&lt;/span&gt;);&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Как вариант можно перейти на использование Fluent assertion syntax с Assert.That и тогда не будет таких ошибок.&lt;br /&gt;
Другой вариант использовать &lt;a class="m" href="https://fluentassertions.com/" target="_blank"&gt;Fluent Assertions&lt;/a&gt;, которые умеют работать поверх любого тестового фреймворка.&lt;/div&gt;
				
		</description>
		
		<category>prj</category><category>codejam</category>
		<pubDate>Fri, 15 May 2020 08:09:02 GMT</pubDate>
		
			<author>_NN_ &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>5</slash:comments>
		
	</item>

	<item>
		<title>Лицензия на Rider</title>
		<link>http://rsdn.org/Forum/prj.codejam/7686715.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/prj.codejam/7686715</guid>
		<comments>http://rsdn.org/Forum/prj.codejam/7686715</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=7686715</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/7686715</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=7686715</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;Для работы над CJ доступна бесплатная лицензия на Rider. Кому надо &amp;mdash; пишите на avk () rsdn.org&lt;/div&gt;
				
		</description>
		
		<category>prj</category><category>codejam</category>
		<pubDate>Sat, 21 Mar 2020 12:06:08 GMT</pubDate>
		
			<author>AndrewVK &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>1</slash:comments>
		
	</item>

	<item>
		<title>3.1.0 stable</title>
		<link>http://rsdn.org/Forum/prj.codejam/7669612.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/prj.codejam/7669612</guid>
		<comments>http://rsdn.org/Forum/prj.codejam/7669612</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=7669612</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/7669612</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=7669612</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;&lt;blockquote class='q'&gt;&lt;p&gt;What's new in 3.1.0&lt;br /&gt;
-------------------&lt;br /&gt;
* Return missing Jetbrains annotations&lt;br /&gt;
* One argument enumerable deconstruct&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;
				
		</description>
		
		<category>prj</category><category>codejam</category>
		<pubDate>Sat, 29 Feb 2020 07:16:57 GMT</pubDate>
		
			<author>AndrewVK &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>0</slash:comments>
		
	</item>

	<item>
		<title>3.0.1 stable released</title>
		<link>http://rsdn.org/Forum/prj.codejam/7661395.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/prj.codejam/7661395</guid>
		<comments>http://rsdn.org/Forum/prj.codejam/7661395</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=7661395</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/7661395</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=7661395</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;&lt;blockquote class='q'&gt;&lt;p&gt;What's new in 3.0.1&lt;br /&gt;
-----------------------&lt;br /&gt;
* IsAssignableTo() reflection helper.&lt;br /&gt;
* Deconstruct methods for arrays, lists and enumerables (to support positional pattern).&lt;br /&gt;
* !Breaking change!: EnumHelper.GetFlagsMask() replaced with EnumHelper.GetValuesMask() method.&lt;br /&gt;
* Algorithms.MinMax(). Math.Min/Max() for any comparable type.&lt;br /&gt;
* EnumHelper.GetDefinedFlags(value).&lt;br /&gt;
* EnumHelper.ToFlags(value) extension method.&lt;br /&gt;
* Code cleanup.&lt;br /&gt;
* WaitForCancellationAsync() extension method.&lt;br /&gt;
* TimeoutHelper class.&lt;br /&gt;
* WithTimeout() methods.&lt;br /&gt;
* Connection string parser/formatter class&lt;br /&gt;
* IsBrowsable/IsCompilerGenerated reflection helpers&lt;br /&gt;
* Code.NotDefault assertion&lt;br /&gt;
* DateTime[Offset].Round method&lt;br /&gt;
* Disposable.DisposeAsync method&lt;br /&gt;
* TimeSpanHelpers class&lt;br /&gt;
* CancellationToken.WhenCancelled method&lt;br /&gt;
* Core 3.0 and 3.1 support&lt;br /&gt;
* Move ToHashSet() and GetValueOrDefault() to separate namespace to prevent conflicts&lt;br /&gt;
* Platform targeting reworked&lt;br /&gt;
* Assertions revisited&lt;br /&gt;
* DateTime[Offset] related assertions and extensions&lt;br /&gt;
* Symbols package added&lt;br /&gt;
* Refactoring, fixes and and code cleanup&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;
				
		</description>
		
		<category>prj</category><category>codejam</category>
		<pubDate>Wed, 19 Feb 2020 10:20:02 GMT</pubDate>
		
			<author>AndrewVK &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>0</slash:comments>
		
	</item>

	<item>
		<title>3.0.1-rc released</title>
		<link>http://rsdn.org/Forum/prj.codejam/7661098.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/prj.codejam/7661098</guid>
		<comments>http://rsdn.org/Forum/prj.codejam/7661098</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=7661098</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/7661098</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=7661098</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;&lt;blockquote class='q'&gt;&lt;p&gt;What's new in 3.0.1-rc1&lt;br /&gt;
-----------------------&lt;br /&gt;
* Fixes and and code cleanup&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;
				
		</description>
		
		<category>prj</category><category>codejam</category>
		<pubDate>Tue, 18 Feb 2020 20:35:42 GMT</pubDate>
		
			<author>AndrewVK &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>0</slash:comments>
		
	</item>

	<item>
		<title>3.0.1-beta3</title>
		<link>http://rsdn.org/Forum/prj.codejam/7655580.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/prj.codejam/7655580</guid>
		<comments>http://rsdn.org/Forum/prj.codejam/7655580</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=7655580</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/7655580</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=7655580</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;&lt;a class="m" href="https://www.nuget.org/packages/CodeJam/3.0.1-beta3" target="_blank"&gt;https://www.nuget.org/packages/CodeJam/3.0.1-beta3&lt;/a&gt;&lt;br /&gt;
&lt;blockquote class='q'&gt;&lt;p&gt;What's new in 3.0.1-beta3&lt;br /&gt;
-------------------------&lt;br /&gt;
* IsAssignableTo() reflection helper.&lt;br /&gt;
* Deconstruct methods for arrays, lists and enumerables (to support positional pattern).&lt;br /&gt;
* !Breaking change!: EnumHelper.GetFlagsMask() replaced with EnumHelper.GetValuesMask() method.&lt;br /&gt;
* Algorithms.MinMax(). Math.Min/Max() for any comparable type.&lt;br /&gt;
* EnumHelper.GetDefinedFlags(value).&lt;br /&gt;
* EnumHelper.ToFlags(value) extension method.&lt;br /&gt;
* Code cleanup.&lt;br /&gt;
* WaitForCancellationAsync() extension method.&lt;br /&gt;
* TimeoutHelper class.&lt;br /&gt;
* WithTimeout() methods.&lt;br /&gt;
* Refactoring, fixes and and code cleanup&lt;/p&gt;&lt;/blockquote&gt;
Скорее всего последняя бета перед релизом. Если кто то планировал PR к релизу &amp;mdash; самое время.&lt;/div&gt;
				
		</description>
		
		<category>prj</category><category>codejam</category>
		<pubDate>Tue, 11 Feb 2020 20:22:25 GMT</pubDate>
		
			<author>AndrewVK &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>0</slash:comments>
		
	</item>

	<item>
		<title>3.0.1-beta2</title>
		<link>http://rsdn.org/Forum/prj.codejam/7623190.1</link>
		<guid isPermaLink="true">http://rsdn.org/Forum/prj.codejam/7623190</guid>
		<comments>http://rsdn.org/Forum/prj.codejam/7623190</comments>
		<wfw:comment>http://rsdn.org/Forum/PostRssComment.aspx?mid=7623190</wfw:comment>
		<wfw:commentRss>http://rsdn.org/Forum/RSS/7623190</wfw:commentRss>
		<trackback:ping>http://rsdn.org/Forum/Trackback.aspx?mid=7623190</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://rsdn.org/Forum/Forum.css);"&gt;&lt;blockquote class='q'&gt;&lt;p&gt;What's new in 3.0.1-beta2&lt;br /&gt;
-------------------------&lt;br /&gt;
* Connection string parser/formatter class&lt;br /&gt;
* IsBrowsable/IsCompilerGenerated reflection helpers&lt;br /&gt;
* Code.NotDefault assertion&lt;br /&gt;
* DateTime[Offset].Round method&lt;br /&gt;
* Disposable.DisposeAsync method&lt;br /&gt;
* TimeSpanHelpers class&lt;br /&gt;
* CancellationToken.WhenCancelled method&lt;br /&gt;
* Fixes, refactoring and code cleanup&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;
				
		</description>
		
		<category>prj</category><category>codejam</category>
		<pubDate>Sun, 29 Dec 2019 13:03:00 GMT</pubDate>
		
			<author>AndrewVK &lt;forum@rsdn.org&gt;</author>
		
		
			<slash:comments>0</slash:comments>
		
	</item>
</channel>
</rss>
