{"id":499,"date":"2017-08-24T11:03:25","date_gmt":"2017-08-24T16:03:25","guid":{"rendered":"https:\/\/www.baronsoftware.com\/Blog\/?p=499"},"modified":"2017-08-24T11:03:25","modified_gmt":"2017-08-24T16:03:25","slug":"c-8-0-previewed-microsoft-visual-studio","status":"publish","type":"post","link":"https:\/\/www.baronsoftware.com\/Blog\/c-8-0-previewed-microsoft-visual-studio\/","title":{"rendered":"C# 8.0 Previewed"},"content":{"rendered":"<h1 style=\"text-align: center;\">C# 8.0 Previewed<\/h1>\n<p>Originally written in\u00a0<a href=\"https:\/\/www.infoq.com\/news\/2017\/08\/CSharp-8\" target=\"_blank\" rel=\"noopener\">www.infoq.com,<\/a> some amazing stuff coming down the pipe for C#.<\/p>\n<h4><b>Nullable Reference Types<\/b><\/h4>\n<p>We\u2019ve covered\u00a0<a href=\"https:\/\/www.infoq.com\/news\/2017\/04\/CSharp-Nullable\">nullable reference types<\/a>\u00a0in the past, but briefly the idea is that reference types would no longer be nullable by default. Instead, you have to explicitly mark them as nullable using the same \u201cType?\u201d syntax that you use for nullable value types.<\/p>\n<p>Assigning a null to a non-nullable reference type will be a compiler warning. Likewise, reading from a nullable type would be a compiler warning unless the variable in question was explicitly checked for null ahead of time. So theoretically the only change developers need to make is to sprinkle question marks where appropriate.<\/p>\n<p>Since our report, a new syntax was added to this feature. Consider a scenario where you know that the nullable variable x isn\u2019t actually null, but you can\u2019t prove that to the compiler. In this case you can use x!.Method() to suppress the compiler warning about potential null reference exceptions.<\/p>\n<h4><b>Async Streams (a.k.a. foreach async)<\/b><\/h4>\n<p>Async streams are the asynchronous equivalent of IEnumerable. As we reported before,\u00a0<a href=\"https:\/\/www.infoq.com\/news\/2017\/05\/async-streams\">async streams<\/a>\u00a0is something that they\u2019ve been working on since 2015. After much debate the syntax they settled on is:<\/p>\n<pre class=\" language-csharp\"><code class=\" language-csharp\"><span class=\"token keyword\">foreach<\/span> <span class=\"token keyword\">await<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">string<\/span> s <span class=\"token keyword\">in<\/span> asyncStream<span class=\"token punctuation\">)<\/span><\/code><\/pre>\n<p>When defining an async iterator, you would use this function signature:<\/p>\n<pre class=\" language-csharp\"><code class=\" language-csharp\"><span class=\"token keyword\">async<\/span> IAsyncEnumerable<span class=\"token operator\">&lt;<\/span>T<span class=\"token operator\">&gt;<\/span> <span class=\"token function\">MethodName<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/code><\/pre>\n<p>As with normal IEnumerable methods, you can use \u201cyield return\u201d to build the stream of objects in a lazy fashion.<\/p>\n<p>The benefit of using this instead of IObservable&lt;T&gt; from Reactive Extensions is that the consumer controls the flow rate. This is referred to as a \u201cpull model\u201d. By contrast, IObservable&lt;T&gt; is a \u201cpush model\u201d, which means the producer can flood the consumer with a higher flow rate than it can handle.<\/p>\n<h4><b>Default Interface Implementations<\/b><\/h4>\n<p>Default interface implementations are essentially a limited form of multiple-inheritance. This will allow abstract interfaces to fully define methods just like abstract classes. However, abstract interfaces will still not be able to declare constructors or fields.<\/p>\n<p>Note: You can simulate fields on an interface using\u00a0<a href=\"https:\/\/www.infoq.com\/news\/2015\/05\/CSharp-7-extension-classes\">ConditionalWeakTable<\/a>.<\/p>\n<p>The primary benefit of default interface implementations is that you may be able to add new methods to an existing interface without breaking backwards compatibility. This isn\u2019t guaranteed, as it would only work when a suitable default method can be devised.<\/p>\n<p>This is a very controversial feature. We won\u2019t repeat the arguments for and against it here, but you can read a summary of them in our earlier article on\u00a0<a href=\"https:\/\/www.infoq.com\/news\/2017\/04\/Clr-Default-Methods\">default interface implementations<\/a>.<\/p>\n<h4><b>Extension Everything<\/b><\/h4>\n<p>A long-time complaint about C# was that you could write extension methods, but not extension properties. In fact, there is no way to even define an extension property or event using the current pattern. Additionally, putting extension methods in static classes feels \u2018weird\u2019 to many people.<\/p>\n<p>Under the new design, there is a new top-level construct called an \u201cextension\u201d. For example, if you want to create extension methods and properties for a Customer class you would write:<\/p>\n<pre class=\" language-csharp\"><code class=\" language-csharp\">extension CustomerExt extends <span class=\"token class-name\">Customer<\/span> <span class=\"token punctuation\">{<\/span>\r\n    <span class=\"token comment\" spellcheck=\"true\">\/\/methods and properties go here<\/span>\r\n<span class=\"token punctuation\">}<\/span>\r\n<\/code><\/pre>\n<p>As with interfaces, you cannot define instance fields in extensions but you can simulate them using ConditionalWeakTable. You can also define static fields.<\/p>\n<h4><b>Extension Interfaces<\/b><\/h4>\n<p>Extension interfaces, the ability to add new interfaces to existing classes, is also being considered. This would not be a C# 8 feature though, as it would require changes to the underlying runtime.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>C# 8.0 Previewed Originally written in\u00a0www.infoq.com, some amazing stuff coming down the pipe for C#. Nullable Reference Types We\u2019ve covered\u00a0nullable reference types\u00a0in the past, but briefly the idea is that reference types would no longer be nullable by default. Instead, you have to explicitly mark them as nullable using the same \u201cType?\u201d syntax that you [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rop_custom_images_group":[],"rop_custom_messages_group":[],"rop_publish_now":"initial","rop_publish_now_accounts":[],"rop_publish_now_history":[],"rop_publish_now_status":"pending","_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[31,3],"tags":[33,16,100,21,20,7,13,22,47,40,8,29,15,6,24],"class_list":["post-499","post","type-post","status-publish","format-standard","hentry","category-software-development-concepts","category-software-events","tag-android","tag-apple","tag-c","tag-computers","tag-delphi","tag-development","tag-embarcadero","tag-google","tag-idera","tag-imac","tag-lazarus","tag-linux","tag-microsoft","tag-software","tag-windows-10"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>C# 8.0 Previewed - Baron Software<\/title>\n<meta name=\"description\" content=\"Originally written in infoq.com, some amazing stuff coming down the pipe for C#. This could be part of Visual Studio in the future.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.baronsoftware.com\/Blog\/c-8-0-previewed-microsoft-visual-studio\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C# 8.0 Previewed\" \/>\n<meta property=\"og:description\" content=\"Originally written in\u00a0www.infoq.com, some amazing stuff coming down the pipe for C#.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.baronsoftware.com\/Blog\/c-8-0-previewed-microsoft-visual-studio\/\" \/>\n<meta property=\"og:site_name\" content=\"Baron Software\" \/>\n<meta property=\"article:published_time\" content=\"2017-08-24T16:03:25+00:00\" \/>\n<meta name=\"author\" content=\"richard@baronsoftware.com\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"C# 8.0 Previewed\" \/>\n<meta name=\"twitter:description\" content=\"Originally written in\u00a0www.infoq.com, some amazing stuff coming down the pipe for C#.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.baronsoftware.com\/Blog\/wp-content\/uploads\/2014\/12\/logo.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@Rbaroniunas\" \/>\n<meta name=\"twitter:site\" content=\"@Rbaroniunas\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"richard@baronsoftware.com\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.baronsoftware.com\\\/Blog\\\/c-8-0-previewed-microsoft-visual-studio\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.baronsoftware.com\\\/Blog\\\/c-8-0-previewed-microsoft-visual-studio\\\/\"},\"author\":{\"name\":\"richard@baronsoftware.com\",\"@id\":\"https:\\\/\\\/www.baronsoftware.com\\\/Blog\\\/#\\\/schema\\\/person\\\/079d370e4230be9d5f75885bb33dd8cd\"},\"headline\":\"C# 8.0 Previewed\",\"datePublished\":\"2017-08-24T16:03:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.baronsoftware.com\\\/Blog\\\/c-8-0-previewed-microsoft-visual-studio\\\/\"},\"wordCount\":560,\"publisher\":{\"@id\":\"https:\\\/\\\/www.baronsoftware.com\\\/Blog\\\/#organization\"},\"keywords\":[\"Android\",\"Apple\",\"C#\",\"computers\",\"Delphi\",\"Development\",\"Embarcadero\",\"Google\",\"Idera\",\"iMac\",\"Lazarus\",\"Linux\",\"Microsoft\",\"Software\",\"Windows 10\"],\"articleSection\":[\"Software development Concepts\",\"Software Events\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.baronsoftware.com\\\/Blog\\\/c-8-0-previewed-microsoft-visual-studio\\\/\",\"url\":\"https:\\\/\\\/www.baronsoftware.com\\\/Blog\\\/c-8-0-previewed-microsoft-visual-studio\\\/\",\"name\":\"C# 8.0 Previewed - Baron Software\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.baronsoftware.com\\\/Blog\\\/#website\"},\"datePublished\":\"2017-08-24T16:03:25+00:00\",\"description\":\"Originally written in infoq.com, some amazing stuff coming down the pipe for C#. This could be part of Visual Studio in the future.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.baronsoftware.com\\\/Blog\\\/c-8-0-previewed-microsoft-visual-studio\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.baronsoftware.com\\\/Blog\\\/c-8-0-previewed-microsoft-visual-studio\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.baronsoftware.com\\\/Blog\\\/c-8-0-previewed-microsoft-visual-studio\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.baronsoftware.com\\\/Blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"C# 8.0 Previewed\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.baronsoftware.com\\\/Blog\\\/#website\",\"url\":\"https:\\\/\\\/www.baronsoftware.com\\\/Blog\\\/\",\"name\":\"Baron Software\",\"description\":\"Highest Quality Software Developed.\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.baronsoftware.com\\\/Blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.baronsoftware.com\\\/Blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.baronsoftware.com\\\/Blog\\\/#organization\",\"name\":\"Baron Software\",\"url\":\"https:\\\/\\\/www.baronsoftware.com\\\/Blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.baronsoftware.com\\\/Blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/i2.wp.com\\\/www.baronsoftware.com\\\/Blog\\\/wp-content\\\/uploads\\\/2018\\\/01\\\/BaronSoftwareLogo.fw_.png?fit=1920%2C400&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i2.wp.com\\\/www.baronsoftware.com\\\/Blog\\\/wp-content\\\/uploads\\\/2018\\\/01\\\/BaronSoftwareLogo.fw_.png?fit=1920%2C400&ssl=1\",\"width\":1920,\"height\":400,\"caption\":\"Baron Software\"},\"image\":{\"@id\":\"https:\\\/\\\/www.baronsoftware.com\\\/Blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/Rbaroniunas\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.baronsoftware.com\\\/Blog\\\/#\\\/schema\\\/person\\\/079d370e4230be9d5f75885bb33dd8cd\",\"name\":\"richard@baronsoftware.com\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e5a3cc457a883c420e8af899f2639359d220ae6bfed4587ca7ed17f45ca0c21c?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e5a3cc457a883c420e8af899f2639359d220ae6bfed4587ca7ed17f45ca0c21c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e5a3cc457a883c420e8af899f2639359d220ae6bfed4587ca7ed17f45ca0c21c?s=96&d=mm&r=g\",\"caption\":\"richard@baronsoftware.com\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"C# 8.0 Previewed - Baron Software","description":"Originally written in infoq.com, some amazing stuff coming down the pipe for C#. This could be part of Visual Studio in the future.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.baronsoftware.com\/Blog\/c-8-0-previewed-microsoft-visual-studio\/","og_locale":"en_US","og_type":"article","og_title":"C# 8.0 Previewed","og_description":"Originally written in\u00a0www.infoq.com, some amazing stuff coming down the pipe for C#.","og_url":"https:\/\/www.baronsoftware.com\/Blog\/c-8-0-previewed-microsoft-visual-studio\/","og_site_name":"Baron Software","article_published_time":"2017-08-24T16:03:25+00:00","author":"richard@baronsoftware.com","twitter_card":"summary_large_image","twitter_title":"C# 8.0 Previewed","twitter_description":"Originally written in\u00a0www.infoq.com, some amazing stuff coming down the pipe for C#.","twitter_image":"https:\/\/www.baronsoftware.com\/Blog\/wp-content\/uploads\/2014\/12\/logo.jpg","twitter_creator":"@Rbaroniunas","twitter_site":"@Rbaroniunas","twitter_misc":{"Written by":"richard@baronsoftware.com","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.baronsoftware.com\/Blog\/c-8-0-previewed-microsoft-visual-studio\/#article","isPartOf":{"@id":"https:\/\/www.baronsoftware.com\/Blog\/c-8-0-previewed-microsoft-visual-studio\/"},"author":{"name":"richard@baronsoftware.com","@id":"https:\/\/www.baronsoftware.com\/Blog\/#\/schema\/person\/079d370e4230be9d5f75885bb33dd8cd"},"headline":"C# 8.0 Previewed","datePublished":"2017-08-24T16:03:25+00:00","mainEntityOfPage":{"@id":"https:\/\/www.baronsoftware.com\/Blog\/c-8-0-previewed-microsoft-visual-studio\/"},"wordCount":560,"publisher":{"@id":"https:\/\/www.baronsoftware.com\/Blog\/#organization"},"keywords":["Android","Apple","C#","computers","Delphi","Development","Embarcadero","Google","Idera","iMac","Lazarus","Linux","Microsoft","Software","Windows 10"],"articleSection":["Software development Concepts","Software Events"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.baronsoftware.com\/Blog\/c-8-0-previewed-microsoft-visual-studio\/","url":"https:\/\/www.baronsoftware.com\/Blog\/c-8-0-previewed-microsoft-visual-studio\/","name":"C# 8.0 Previewed - Baron Software","isPartOf":{"@id":"https:\/\/www.baronsoftware.com\/Blog\/#website"},"datePublished":"2017-08-24T16:03:25+00:00","description":"Originally written in infoq.com, some amazing stuff coming down the pipe for C#. This could be part of Visual Studio in the future.","breadcrumb":{"@id":"https:\/\/www.baronsoftware.com\/Blog\/c-8-0-previewed-microsoft-visual-studio\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.baronsoftware.com\/Blog\/c-8-0-previewed-microsoft-visual-studio\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.baronsoftware.com\/Blog\/c-8-0-previewed-microsoft-visual-studio\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.baronsoftware.com\/Blog\/"},{"@type":"ListItem","position":2,"name":"C# 8.0 Previewed"}]},{"@type":"WebSite","@id":"https:\/\/www.baronsoftware.com\/Blog\/#website","url":"https:\/\/www.baronsoftware.com\/Blog\/","name":"Baron Software","description":"Highest Quality Software Developed.","publisher":{"@id":"https:\/\/www.baronsoftware.com\/Blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.baronsoftware.com\/Blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.baronsoftware.com\/Blog\/#organization","name":"Baron Software","url":"https:\/\/www.baronsoftware.com\/Blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.baronsoftware.com\/Blog\/#\/schema\/logo\/image\/","url":"https:\/\/i2.wp.com\/www.baronsoftware.com\/Blog\/wp-content\/uploads\/2018\/01\/BaronSoftwareLogo.fw_.png?fit=1920%2C400&ssl=1","contentUrl":"https:\/\/i2.wp.com\/www.baronsoftware.com\/Blog\/wp-content\/uploads\/2018\/01\/BaronSoftwareLogo.fw_.png?fit=1920%2C400&ssl=1","width":1920,"height":400,"caption":"Baron Software"},"image":{"@id":"https:\/\/www.baronsoftware.com\/Blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/Rbaroniunas"]},{"@type":"Person","@id":"https:\/\/www.baronsoftware.com\/Blog\/#\/schema\/person\/079d370e4230be9d5f75885bb33dd8cd","name":"richard@baronsoftware.com","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/e5a3cc457a883c420e8af899f2639359d220ae6bfed4587ca7ed17f45ca0c21c?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/e5a3cc457a883c420e8af899f2639359d220ae6bfed4587ca7ed17f45ca0c21c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e5a3cc457a883c420e8af899f2639359d220ae6bfed4587ca7ed17f45ca0c21c?s=96&d=mm&r=g","caption":"richard@baronsoftware.com"}}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p2e6qU-83","jetpack-related-posts":[{"id":570,"url":"https:\/\/www.baronsoftware.com\/Blog\/elevate-software-new-build-6-now-available-version-2-06-elevate-web-builder\/","url_meta":{"origin":499,"position":0},"title":"Elevate Software New Build 6 Now Available for Version 2.06 of Elevate Web Builder","author":"richard@baronsoftware.com","date":"September 13, 2017","format":false,"excerpt":"Elevate Software New Build 6 Now Available for Version 2.06 of Elevate Web Builder Elevate Software is\u00a0\u00a0pleased to announce that build 6 for version 2.06 of Elevate Web Builder is now available. Issues repaired : Problems with Inertia Scrolling When Switching Between ScrollBars and Touch Scrolling Compiler Not Resolving Function\u2026","rel":"","context":"In &quot;Software Events&quot;","block_context":{"text":"Software Events","link":"https:\/\/www.baronsoftware.com\/Blog\/category\/software-events\/"},"img":{"alt_text":"EWB","src":"https:\/\/i0.wp.com\/www.baronsoftware.com\/Blog\/wp-content\/uploads\/2017\/09\/ewbproduct.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":320,"url":"https:\/\/www.baronsoftware.com\/Blog\/embarcadero-webinar-useful-c-features-using\/","url_meta":{"origin":499,"position":1},"title":"Embarcadero Webinar C++ latest features","author":"richard@baronsoftware.com","date":"July 6, 2016","format":false,"excerpt":"\u00a0 <h1>Embarcadero\u00a0Webinar - Useful C++ Features You Should be Using<\/h1> The Embarcadero webinar are usually excellent and short providing you insight on the latest features for C++ Builder. \u00a0Even if you do not use the product there is a possibility that you will pick up some new clue on how\u2026","rel":"","context":"In &quot;Computer PC Tips - bits and bytes&quot;","block_context":{"text":"Computer PC Tips - bits and bytes","link":"https:\/\/www.baronsoftware.com\/Blog\/category\/pc-tips-bits-bytes\/"},"img":{"alt_text":"Embarcadero Logo","src":"https:\/\/i0.wp.com\/www.baronsoftware.com\/Blog\/wp-content\/uploads\/2016\/01\/Embarcadero-Logo-e1467218648875.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":88,"url":"https:\/\/www.baronsoftware.com\/Blog\/delphi-tip-if-you-get-unit-vcl-filectrl-is-specific-to-a-platform-warning\/","url_meta":{"origin":499,"position":2},"title":"Delphi Tip if you get &#8220;unit vcl.filectrl is specific to a platform&#8221; warning","author":"richard@baronsoftware.com","date":"February 10, 2015","format":false,"excerpt":"The warning \"unit vcl.filectrl is specific to a platform\" is Delphi's way of giving you heads up that the addition of one of the few components such as TDRIVECOMBOBOX will not work on other platforms besides a Windows environment. To remove this type of warning during the application build cycle\u2026","rel":"","context":"In &quot;Rad Studio Delphi Development&quot;","block_context":{"text":"Rad Studio Delphi Development","link":"https:\/\/www.baronsoftware.com\/Blog\/category\/rad-studio-embarcadero-delphi-development\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":115,"url":"https:\/\/www.baronsoftware.com\/Blog\/lazarus-pascal-release-version-1-4\/","url_meta":{"origin":499,"position":3},"title":"Lazarus Pascal Release Version 1.4","author":"richard@baronsoftware.com","date":"April 30, 2015","format":false,"excerpt":"The free Pascal compiler, Lazarus version 1.4 has been released and can be obtained for free by clicking here! The work involved by developers to get a free Windows \/ Linux \/ Mac compiler for anyone to use is simply amazing. The work is based on contributions provided to the\u2026","rel":"","context":"In &quot;Software Events&quot;","block_context":{"text":"Software Events","link":"https:\/\/www.baronsoftware.com\/Blog\/category\/software-events\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":796,"url":"https:\/\/www.baronsoftware.com\/Blog\/microsoft-turning-off-push-notifications-windows-phone-7-5-8-0\/","url_meta":{"origin":499,"position":4},"title":"Microsoft is turning off push notifications for Windows Phone 7.5 and 8.0","author":"richard@baronsoftware.com","date":"February 20, 2018","format":false,"excerpt":"Microsoft is turning off push notifications for Windows Phone 7.5 and 8.0 Microsoft has\u00a0announced\u00a0that it is ending the push notification service on Windows Phone 7 and Windows Phone 8 starting February 20th, 2018. The company says that since both of those platforms have reached the end of their support, these\u2026","rel":"","context":"In &quot;Computer PC Tips - bits and bytes&quot;","block_context":{"text":"Computer PC Tips - bits and bytes","link":"https:\/\/www.baronsoftware.com\/Blog\/category\/pc-tips-bits-bytes\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.baronsoftware.com\/Blog\/wp-content\/uploads\/2018\/02\/cropped-BaronSoftwareLogo_2018.fw_-1-300x62.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":349,"url":"https:\/\/www.baronsoftware.com\/Blog\/code-analysis-application\/","url_meta":{"origin":499,"position":5},"title":"Code Analysis what does it do for your application ?","author":"richard@baronsoftware.com","date":"October 17, 2016","format":false,"excerpt":"Code Analysis what does it do for your application ? When developing an application you want to provide the best solution for your clients.\u00a0 This means you need to evaluate current or possible future defects in your source code.\u00a0 This is a reality during the development stage and is highly\u2026","rel":"","context":"In &quot;Computer PC Tips - bits and bytes&quot;","block_context":{"text":"Computer PC Tips - bits and bytes","link":"https:\/\/www.baronsoftware.com\/Blog\/category\/pc-tips-bits-bytes\/"},"img":{"alt_text":"Baron Software","src":"https:\/\/i0.wp.com\/www.baronsoftware.com\/Blog\/wp-content\/uploads\/2014\/12\/logo.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.baronsoftware.com\/Blog\/wp-json\/wp\/v2\/posts\/499","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.baronsoftware.com\/Blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.baronsoftware.com\/Blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.baronsoftware.com\/Blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.baronsoftware.com\/Blog\/wp-json\/wp\/v2\/comments?post=499"}],"version-history":[{"count":1,"href":"https:\/\/www.baronsoftware.com\/Blog\/wp-json\/wp\/v2\/posts\/499\/revisions"}],"predecessor-version":[{"id":500,"href":"https:\/\/www.baronsoftware.com\/Blog\/wp-json\/wp\/v2\/posts\/499\/revisions\/500"}],"wp:attachment":[{"href":"https:\/\/www.baronsoftware.com\/Blog\/wp-json\/wp\/v2\/media?parent=499"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.baronsoftware.com\/Blog\/wp-json\/wp\/v2\/categories?post=499"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.baronsoftware.com\/Blog\/wp-json\/wp\/v2\/tags?post=499"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}