<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Max Smirnov</title>
    <description>The latest articles on DEV Community by Max Smirnov (@maxsmirnov).</description>
    <link>https://dev.to/maxsmirnov</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1167644%2F4b957892-c811-4661-96af-5abf297a41ba.jpg</url>
      <title>DEV Community: Max Smirnov</title>
      <link>https://dev.to/maxsmirnov</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/maxsmirnov"/>
    <language>en</language>
    <item>
      <title>Pocket Kotlin-C# Dictionary. G</title>
      <dc:creator>Max Smirnov</dc:creator>
      <pubDate>Thu, 28 Sep 2023 18:10:17 +0000</pubDate>
      <link>https://dev.to/maxsmirnov/pocket-kotlin-c-dictionary-g-1i14</link>
      <guid>https://dev.to/maxsmirnov/pocket-kotlin-c-dictionary-g-1i14</guid>
      <description>&lt;h2&gt;
  
  
  G
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Kotlin&lt;/th&gt;
&lt;th&gt;C#&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;get&lt;/strong&gt;&lt;br&gt; Property getter. The definition can be omitted for default getter&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;get&lt;/strong&gt;&lt;br&gt; Property getter. The definition can be omitted for default getter&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;@get&lt;/strong&gt;&lt;br&gt; Annotation target, used to annotate automatically created getters (e.g. when you have a primary constructor, the compiler automatically creates a field, its getter, its setter and so on, an you want to annotate specifically a getter) &lt;a href="https://kotlinlang.org/docs/annotations.html#annotation-use-site-targets"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;It seems like there's no &lt;em&gt;get:&lt;/em&gt; target as of 2023. &lt;a href="https://stackoverflow.com/questions/55359569/is-there-a-get-attribute-target"&gt;See an example of unresolved question&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>kotlin</category>
      <category>csharp</category>
    </item>
    <item>
      <title>Pocket Kotlin-C# Dictionary. F</title>
      <dc:creator>Max Smirnov</dc:creator>
      <pubDate>Thu, 28 Sep 2023 17:39:25 +0000</pubDate>
      <link>https://dev.to/maxsmirnov/pocket-kotlin-c-dictionary-f-3b01</link>
      <guid>https://dev.to/maxsmirnov/pocket-kotlin-c-dictionary-f-3b01</guid>
      <description>&lt;h2&gt;
  
  
  F
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Kotlin&lt;/th&gt;
&lt;th&gt;C#&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;false&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;false&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;@field&lt;/strong&gt;&lt;br&gt; Annotation target, used to annotate automatically created fields (e.g. when you have a primary constructor, the compiler automatically creates a field, its getter, its setter and so on, an you want to annotate specifically a field) &lt;a href="https://kotlinlang.org/docs/annotations.html#annotation-use-site-targets"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;New versions of C# have primary constructors, so there can be a property that is not coded expicitly in the code, but as of 2023 I haven't found a way to attach an attribute to such property &lt;a href="https://stackoverflow.com/questions/68860104/how-do-i-add-an-attribute-to-a-records-primary-constructor"&gt;See en example of unresolved question&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;@file&lt;/strong&gt; Annotation target, used to annotate source file &lt;a href="https://americanexpress.io/advanced-kotlin-use-site-targets/"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;In .Net one cannot target attribute on a source file &lt;a href="https://learn.microsoft.com/en-us/dotnet/csharp/advanced-topics/reflection-and-attributes/"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;final&lt;/strong&gt;&lt;br&gt; Modifier that forbids overriding of members &lt;a href="https://kotlinlang.org/docs/inheritance.html"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;sealed&lt;/strong&gt;&lt;br&gt; Modifier that forbids overriding of classes and members. In Kotlin classes are final by default, one has to use modifier &lt;strong&gt;open&lt;/strong&gt; to allow inheritance from a class &lt;a href="https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/sealed"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;finally&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;finally&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;for&lt;/strong&gt;&lt;br&gt; Iterates through anything that implements &lt;em&gt;Iterable&amp;lt;&amp;gt;&lt;/em&gt; interface &lt;a href="https://kotlinlang.org/docs/control-flow.html#for-loops"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;foreach&lt;/strong&gt;&lt;br&gt; Iterates through anything that implements &lt;em&gt;IEnumerable&amp;lt;&amp;gt;&lt;/em&gt; interface &lt;a href="https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/statements/iteration-statements#the-foreach-statement"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;fun&lt;/strong&gt;&lt;br&gt; Function declaration&lt;/td&gt;
&lt;td&gt;C# method declaration doesn't use a designated keyword&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>kotlin</category>
      <category>csharp</category>
    </item>
    <item>
      <title>Pocket Kotlin-C# Dictionary. E</title>
      <dc:creator>Max Smirnov</dc:creator>
      <pubDate>Thu, 28 Sep 2023 11:30:38 +0000</pubDate>
      <link>https://dev.to/maxsmirnov/pocket-kotlin-c-dictionary-e-dmg</link>
      <guid>https://dev.to/maxsmirnov/pocket-kotlin-c-dictionary-e-dmg</guid>
      <description>&lt;h2&gt;
  
  
  E
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Kotlin&lt;/th&gt;
&lt;th&gt;C#&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;else&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;else&lt;/strong&gt;&lt;br&gt; See &lt;strong&gt;if&lt;/strong&gt; for differences&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;enum&lt;/strong&gt;&lt;br&gt; Modifier for enum classes &lt;a href="https://kotlinlang.org/docs/enum-classes.html"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;enum&lt;/strong&gt;&lt;br&gt; In both C# and Kotlin enums are classes, but while in C# it's hidden under the hood, in Kotlin &lt;strong&gt;enum&lt;/strong&gt; is just a modifier for &lt;strong&gt;enum class&lt;/strong&gt; and it has many properties of a casual class: it can have a constructor and methods, it can implement interfaces &lt;a href="https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/enum"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;expect&lt;/strong&gt;&lt;br&gt; Interface-like declaration in cross-platform projects (see &lt;strong&gt;actual&lt;/strong&gt;) &lt;a href="https://kotlinlang.org/docs/multiplatform-connect-to-apis.html"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;interface&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;external&lt;/strong&gt;&lt;br&gt; Modifier for a function implemented externally, outside of Kotlin (accessible through JNI or in JavaScript). External is undocumented and there is an &lt;a href="https://youtrack.jetbrains.com/issue/KT-11021"&gt;issue&lt;/a&gt; to document it that is unresolved for 8 years as of 2023 &lt;a href="https://stackoverflow.com/questions/35552834/what-is-the-purpose-of-external-keyword-in-kotlin"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;extern&lt;/strong&gt;&lt;br&gt; Modifier for an externally implemented method  &lt;a href="https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/extern"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>kotlin</category>
      <category>csharp</category>
    </item>
    <item>
      <title>Pocket Kotlin-C# Dictionary. D</title>
      <dc:creator>Max Smirnov</dc:creator>
      <pubDate>Wed, 27 Sep 2023 16:32:17 +0000</pubDate>
      <link>https://dev.to/maxsmirnov/pocket-kotlin-c-dictionary-d-5fk6</link>
      <guid>https://dev.to/maxsmirnov/pocket-kotlin-c-dictionary-d-5fk6</guid>
      <description>&lt;h2&gt;
  
  
  D
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Kotlin&lt;/th&gt;
&lt;th&gt;C#&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;data&lt;/strong&gt;&lt;br&gt; &lt;strong&gt;Data class&lt;/strong&gt; is a class designed to hold data, it has some automatically created methods like value-based equals() and so on &lt;a href="https://kotlinlang.org/docs/data-classes.html"&gt;Learn more&lt;/a&gt;. &lt;strong&gt;Data object&lt;/strong&gt; a singleton with few automatically created methods &lt;a href="https://kotlinlang.org/docs/object-declarations.html#data-objects"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;record&lt;/strong&gt;, which is a synonym for &lt;strong&gt;record class&lt;/strong&gt;, is an equivalent to Kotlin &lt;strong&gt;data class&lt;/strong&gt;. C# doesn't have built-in support for singletons, so the nearest equivalent to the &lt;strong&gt;data object&lt;/strong&gt; is an explicitly coded singleton of &lt;strong&gt;record class&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/record"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;@delegate&lt;/strong&gt;&lt;br&gt; Annotation target that specifies that annotation is related to delegate automatically created by &lt;strong&gt;by&lt;/strong&gt; &lt;a href="https://kotlinlang.org/docs/annotations.html#annotation-use-site-targets"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;C# does not have built-in language support for delegation pattern. One can code pattern classes manually and set annotating attributes everywhere he wants&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;do&lt;/strong&gt;&lt;br&gt; Do-while loop (loop with postcondition) &lt;a href="https://kotlinlang.org/docs/control-flow.html#while-loops"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;do&lt;/strong&gt;&lt;br&gt; Do-while loop (loop with postcondition) &lt;a href="https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/statements/iteration-statements#the-do-statement"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;dynamic&lt;/strong&gt;&lt;br&gt; Turns-off type-checker to to interoperate with untyped or loosely typed environments, such as the JavaScript ecosystem. Not supported in code targeting the JVM &lt;a href="https://kotlinlang.org/docs/js-project-setup.html"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;No such thing. C# code is always statically-typed (types are checked by compiler)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>kotlin</category>
      <category>csharp</category>
    </item>
    <item>
      <title>Pocket Kotlin-C# Dictionary. C</title>
      <dc:creator>Max Smirnov</dc:creator>
      <pubDate>Tue, 26 Sep 2023 19:26:55 +0000</pubDate>
      <link>https://dev.to/maxsmirnov/pocket-kotlin-c-dictionary-c-jim</link>
      <guid>https://dev.to/maxsmirnov/pocket-kotlin-c-dictionary-c-jim</guid>
      <description>&lt;h2&gt;
  
  
  C
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Kotlin&lt;/th&gt;
&lt;th&gt;C#&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;catch&lt;/strong&gt;&lt;br&gt; Catches exception&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;catch&lt;/strong&gt;&lt;br&gt; Catches exception&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;class&lt;/strong&gt;&lt;br&gt; Class declaration&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;class&lt;/strong&gt;&lt;br&gt; Class declaration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;companion object&lt;/strong&gt;, that is accessible without instantiating a class and &lt;strong&gt;Companion&lt;/strong&gt;, its default name &lt;a href="https://kotlinlang.org/docs/object-declarations.html#companion-objects"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;Replacement for &lt;strong&gt;static&lt;/strong&gt; properties and methods of a class. Differences are numerous! &lt;a href="https://stackoverflow.com/questions/56514503/declare-static-property-in-kotlin"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;const&lt;/strong&gt;&lt;br&gt; Compile-time constant &lt;a href="https://kotlinlang.org/docs/properties.html#compile-time-constants"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;const&lt;/strong&gt;&lt;br&gt; Compile-time constant &lt;a href="https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/classes#154-constants"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;constructor&lt;/strong&gt;&lt;br&gt; Constructor. Can be omitted&lt;/td&gt;
&lt;td&gt;C# constructor syntax doesn't use a designated keyword&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;continue&lt;/strong&gt;&lt;br&gt; A statement to continue a loop &lt;a href="https://kotlinlang.org/docs/returns.html#break-and-continue-labels"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;continue&lt;/strong&gt;&lt;br&gt; A statement to continue a loop. Unlike C#, Kotlin has &lt;strong&gt;continue@myLabel&lt;/strong&gt; syntax to continue any level of nested loops. C# doesn't need it because it has &lt;strong&gt;goto&lt;/strong&gt; statement! Hell yeah! &lt;a href="https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/statements/jump-statements"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;crossinline&lt;/strong&gt;&lt;br&gt; Modifier that indicates that lambda parameter of an inline function cannot use non-local returns&lt;/td&gt;
&lt;td&gt;In C# there are no non-local returns (lambda cannot execute return from outer method, only from itself), so, technically every method is "crossinline"&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>kotlin</category>
      <category>csharp</category>
    </item>
    <item>
      <title>Pocket Kotlin-C# Dictionary. B</title>
      <dc:creator>Max Smirnov</dc:creator>
      <pubDate>Mon, 25 Sep 2023 17:41:31 +0000</pubDate>
      <link>https://dev.to/maxsmirnov/pocket-kotlin-c-dictionary-b-5dk9</link>
      <guid>https://dev.to/maxsmirnov/pocket-kotlin-c-dictionary-b-5dk9</guid>
      <description>&lt;h2&gt;
  
  
  B
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Kotlin&lt;/th&gt;
&lt;th&gt;C#&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;break&lt;/strong&gt;&lt;br&gt; Statement to exit loops &lt;a href="https://kotlinlang.org/docs/returns.html"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;break&lt;/strong&gt;&lt;br&gt; Statement to exit loops. C# &lt;strong&gt;break&lt;/strong&gt; is also used to exit &lt;strong&gt;switch&lt;/strong&gt;, while in Kotlin &lt;strong&gt;when&lt;/strong&gt; this is not needed.&lt;br&gt; C# &lt;strong&gt;break&lt;/strong&gt; can exit only inner loop, while Kotlin has &lt;strong&gt;break@myLabel&lt;/strong&gt; syntax to exit loop of any level. &lt;a href="https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/statements/jump-statements"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;by&lt;/strong&gt;&lt;br&gt; Delegation of interface implementation or property getter and setter to another class &lt;a href="https://kotlinlang.org/docs/delegated-properties.html"&gt;Learn more&lt;/a&gt; &lt;a href="https://kotlinlang.org/docs/delegation.html"&gt;and more&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;This type of delegation has no built-in language support. One has to manually write code that calls delegates&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>kotlin</category>
      <category>csharp</category>
    </item>
    <item>
      <title>Pocket Kotlin-C# Dictionary. A</title>
      <dc:creator>Max Smirnov</dc:creator>
      <pubDate>Fri, 22 Sep 2023 13:07:57 +0000</pubDate>
      <link>https://dev.to/maxsmirnov/pocket-kotlin-c-dictionary-a-3clh</link>
      <guid>https://dev.to/maxsmirnov/pocket-kotlin-c-dictionary-a-3clh</guid>
      <description>&lt;h2&gt;
  
  
  A
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Kotlin&lt;/th&gt;
&lt;th&gt;C#&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;abstract&lt;/strong&gt;&lt;br&gt; Modifier for classes, properties and functions &lt;a href="https://kotlinlang.org/docs/classes.html#class-members"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;abstract&lt;/strong&gt;&lt;br&gt; Modifier for classes, methods, properties, indexers, and events &lt;a href="https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/abstract"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;actual&lt;/strong&gt;&lt;br&gt; Platform-specific modules feature. Functions, classes, interfaces, enumerations, properties, and annotations can be declared as &lt;strong&gt;expect&lt;/strong&gt; in common module, and &lt;strong&gt;actual&lt;/strong&gt; in platform-specific implementations. As of 2023 expect/ actual feature is in Beta &lt;a href="https://kotlinlang.org/docs/multiplatform-connect-to-apis.html"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;Kotlin &lt;strong&gt;expect&lt;/strong&gt; is like an interface, it cannot have an implementation, and &lt;strong&gt;actual&lt;/strong&gt; is like an implementation of interface feature (but it can be an interface itself).&lt;br&gt; &lt;em&gt;Update.&lt;/em&gt; See &lt;a class="mentioned-user" href="https://dev.to/teneko"&gt;@teneko&lt;/a&gt; 's comments below to see how to get the same behavior using &lt;strong&gt;partial&lt;/strong&gt; methods and conditional preprocessor directives.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;also()&lt;/strong&gt;&lt;br&gt; Scope function. Used to avoid &lt;em&gt;if (x == null)&lt;/em&gt; construction at any price &lt;a href="https://kotlinlang.org/docs/scope-functions.html#function-selection"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;No short equivalent.&lt;br&gt; Can be defined as extention function that takes lambda and returns the object it extends&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Anko&lt;/strong&gt;&lt;br&gt;Kotlin library for Android, deprecated as of 2023 &lt;a href="https://stackoverflow.com/questions/68268194/what-do-i-use-now-that-anko-is-deprecated"&gt;Learn more&lt;/a&gt;&lt;br&gt; &lt;em&gt;(etymology: ANdroid + KOtlin)&lt;/em&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Xamarin.Forms&lt;/strong&gt;&lt;br&gt; Xamarin is cross-platform, while Anko is not &lt;a href="https://dotnet.microsoft.com/en-us/apps/xamarin/xamarin-forms"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;annotation&lt;/strong&gt;&lt;br&gt; Annotation class defines custom formats for storing metadata &lt;a href="https://kotlinlang.org/docs/annotations.html"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;System.Attribute&lt;/strong&gt; interface&lt;br&gt; Class that implements System.Attribute interface defines custom attributes, i.e. formats for storing metadata &lt;a href="https://learn.microsoft.com/en-us/dotnet/csharp/advanced-topics/reflection-and-attributes/creating-custom-attributes"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Any&lt;/strong&gt;&lt;br&gt; Root of type hierarchy &lt;a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;object&lt;/strong&gt;&lt;br&gt; Root of type hierarchy &lt;a href="https://learn.microsoft.com/en-us/dotnet/api/system.object?view=net-7.0"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;apply()&lt;/strong&gt;&lt;br&gt; Scope function. Used to avoid &lt;em&gt;if (x == null)&lt;/em&gt; construction at any price &lt;a href="https://kotlinlang.org/docs/scope-functions.html#function-selection"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;No short equivalent.&lt;br&gt; Can be defined as extention function that takes lambda and returns the object it extends&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;as&lt;/strong&gt;&lt;br&gt; Unsafe cast operator, throws an exception when fails &lt;a href="https://kotlinlang.org/docs/typecasts.html#unsafe-cast-operator"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;(T)x&lt;/strong&gt; type cast&lt;br&gt; Throws an exception when fails &lt;a href="https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/type-testing-and-cast#cast-expression"&gt;Learn  more&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;as?&lt;/strong&gt;&lt;br&gt; Safe cast operator, returns null if fails to cast &lt;a href="https://kotlinlang.org/docs/typecasts.html#safe-nullable-cast-operator"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;as&lt;/strong&gt;&lt;br&gt;Returns null if fails to cast &lt;a href="https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/type-testing-and-cast#as-operator"&gt;Learn more&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>kotlin</category>
      <category>csharp</category>
    </item>
    <item>
      <title>Pocket Kotlin-C# Dictionary</title>
      <dc:creator>Max Smirnov</dc:creator>
      <pubDate>Fri, 22 Sep 2023 11:04:12 +0000</pubDate>
      <link>https://dev.to/maxsmirnov/pocket-kotlin-c-dictionary-4h3d</link>
      <guid>https://dev.to/maxsmirnov/pocket-kotlin-c-dictionary-4h3d</guid>
      <description>&lt;p&gt;Hi! &lt;br&gt;
My name is Max, and I'm studying Kotlin. I have more than 20 years of experience in other programming languages, so for me learning another language is more like learning new names of concepts I'm already familiar with. &lt;br&gt;
For my own purposes I want to build a kind of dictionary, translations of Kotlin keywords to my mother tongue C# :), and I'd like to share it with everyone. I want it to be somewhat similar to conventional human language dictionaries - just for fun.&lt;br&gt;
So, here comes a series of posts, each covering some letter, from A to @. I hope it will be useful for people learning Kotlin!&lt;/p&gt;

</description>
      <category>kotlin</category>
      <category>csharp</category>
    </item>
  </channel>
</rss>
