{"id":66340,"date":"2022-02-22T07:30:17","date_gmt":"2022-02-22T06:30:17","guid":{"rendered":"https:\/\/drafts.code-maze.com\/?p=66340"},"modified":"2022-02-22T07:43:45","modified_gmt":"2022-02-22T06:43:45","slug":"csharp-params-keyword","status":"publish","type":"post","link":"https:\/\/code-maze.com\/csharp-params-keyword\/","title":{"rendered":"Params Keyword in C#"},"content":{"rendered":"<p>In this article, we&#8217;ll have a look at the\u00a0<strong>params<\/strong> keyword in C#. We&#8217;ll discuss the use cases and best practices.<\/p>\n<div style=\"padding: 20px; border-left: 5px #dc2323 solid; display: block; margin-bottom: 20px; box-shadow: 1px 1px 5px 0px lightgrey;\">To download the source code for this article, you can visit our <a href=\"https:\/\/github.com\/CodeMazeBlog\/CodeMazeGuides\/tree\/main\/csharp-basic-topics\/ParamsKeyword\" target=\"_blank\" rel=\"nofollow noopener\">GitHub repository<\/a>.<\/div>\n<p>Let&#8217;s dive in!<\/p>\n<h2>What Is the &#8216;Params&#8217; Keyword?<\/h2>\n<p><code>params<\/code> is a special keyword that allows <strong>passing a variable number of parameters<\/strong> into a method. It allows a nice, flexible syntax that helps us specify:<\/p>\n<ul>\n<li>One or multiple parameters separated by commas (that&#8217;s the &#8216;killer feature&#8217;)<\/li>\n<li>No parameters at all<\/li>\n<li>A single parameter of a single-dimensional array type<\/li>\n<\/ul>\n<p>Let&#8217;s see how it looks.<\/p>\n<p>First, we define a method that accepts the <code>params<\/code> argument:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-highlight=\"3\">public class ShoppingList\r\n{\r\n    public void Add(params string[] items)\r\n    {\r\n        foreach (var item in items)\r\n        {\r\n            Console.WriteLine($\"Added: {item}\");\r\n        }\r\n    }\r\n}<\/pre>\n<p>The <code>params<\/code> keyword has to be followed by a <strong>single-dimensional array<\/strong>.<\/p>\n<p>Within the method body, it doesn&#8217;t matter that the values were passed as a <code>params<\/code> argument. This is completely transparent, and the variable<strong> behaves exactly like any other array variable<\/strong>.<\/p>\n<p>Let&#8217;s have a look at the various valid ways of calling this method. First off, the &#8216;free flow&#8217; of arguments:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">var shoppingList = new ShoppingList();\r\nshoppingList.Add(\"Bananas\", \"Grapes\", \"Ham\", \"Cheese\");\r\nshoppingList.Add(\"Headphones\");<\/pre>\n<p>As you can see, we can add one or many arguments directly within the method, without declaring any collections to wrap the parameters.\u00a0<\/p>\n<p>Secondly, we can also call the method with a single parameter &#8211; <strong>a single-dimensional array of the type specified in the signature:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">var groceries = new [] { \"Bananas\", \"Grapes\", \"Ham\", \"Cheese\" };\r\nshoppingList.Add(groceries);<\/pre>\n<p>Lastly, it&#8217;s perfectly acceptable to not pass any value and omit the argument completely:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">shoppingList.Add();<\/pre>\n<p>Notice that in this case, the <strong>value of the argument is an empty array.<\/strong>\u00a0Omitting the argument does not pass a null value. <strong>However, it is possible to pass a null <\/strong><code>params<\/code> <strong>argument<\/strong> <strong>to the method<\/strong> &#8211; and in that case, the argument will be null in the method body too.<\/p>\n<h2>Adding the &#8216;Params&#8217; Keyword to a Method Signature<\/h2>\n<p>There are a few conditions for adding a <code>params<\/code> argument to a method:<\/p>\n<ul>\n<li>It has to be the\u00a0<strong>last argument in the method signature<\/strong><\/li>\n<li>There can be <strong>only one<\/strong> <code>params<\/code> argument<\/li>\n<li>It has to be an <strong>array\u00a0<\/strong>(other collection types are not permitted)<\/li>\n<li>It cannot have a <a href=\"https:\/\/code-maze.com\/csharp-named-arguments-optional-parameters\/\" target=\"_blank\" rel=\"nofollow noopener\">default value assigned<\/a><\/li>\n<\/ul>\n<p>We can, however, combine <code>params<\/code> arguments with other parameters in the method body, even of the same type. Consequently, the following method signatures are perfectly valid:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">public void StringBeforeStringParams(string requiredStringArgument, params string[] items)<\/code><\/p>\n<p>In this case, the compiler will expect at least one string passed to the method. It will treat all the following strings as values for the\u00a0<code>params<\/code> argument.<\/p>\n<p>We can also declare multiple arrays of the same type:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">ArrayBeforeParams(string[] requiredArray, params string[] items)<\/code><\/p>\n<p>The method above can be called in two ways:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">ArrayBeforeParams(new[] {\"Required\", \"Array\"}, \"And\", \"Free\", \"Arguments\")\r\nArrayBeforeParams(new[] {\"Required\", \"Array\"},  new[] {\"And\", \"Array\", \"For Params\"})<\/pre>\n<p>We can also specify optional arguments in the method signature:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">void OtherArgumentsBeforeParams(int requiredParam, bool optionalBool = true, params string[] items)<br \/>\n<\/code><\/p>\n<p>Notice that here, even though we have specified the boolean parameter as optional, <strong>we cannot omit it when calling the method<\/strong>:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">OtherArgumentsBeforeParams(2, \"Ooops\", \"Doesn't\", \"compile!\");<\/code><\/p>\n<p>The code above will show the &#8220;<em>Cannot convert from &#8216;string&#8217; to &#8216;bool&#8217;<\/em>&#8221; error until we explicitly specify a value for the <code>optionalBool<\/code> argument:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">OtherArgumentsBeforeParams(2, true, \"Yeah\", \"Now\", \"All good\");<\/code><\/p>\n<p>Another thing worth mentioning is that\u00a0<code>params<\/code> <strong>doesn&#8217;t work well with named arguments:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">UseParamsWithNamedArguments(int firstArgument, params string[] items){ ... } \r\n\r\nUseParamsWithNamedArguments(firstArgument: 10, items: \"Ooops\", \"Doesn't\", \"Compile\");<\/pre>\n<p>The sample above shows a &#8220;<em>No overload for method takes 4 arguments<\/em>&#8221; compiler error. In order to use named arguments, we need to wrap the comma-separated values into an array:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">UseParamsWithNamedArguments(firstArgument: 10, items: new [] { \"Now\", \"all\", \"good\"} );<\/code><\/p>\n<h2>Why Use the \u2018Params\u2019 Keyword?<\/h2>\n<p>As mentioned, using the <code>params<\/code> keyword adds a bit of flexibility and it can make our methods more user-friendly.<\/p>\n<p>On the other hand, it has some downsides. It introduces some ambiguity in methods that take multiple parameters because it&#8217;s less explicit about what methods require.<\/p>\n<p>A significant problem with this happens when a method signature changes (e.g. someone adds or removes an argument). <strong>T<\/strong><strong>he calling code might still compile, but assign incorrect values to arguments <\/strong>where we used <code>params<\/code> argument with a comma-separated list of values. This is <strong>especially dangerous in case of <\/strong><code>params object[]<\/code> because this argument type will accept any value type.<\/p>\n<p><strong>For this reason alone, the benefits of this keyword are rarely worth the risk, especially in public-facing APIs.<\/strong><\/p>\n<h2>Conclusion<\/h2>\n<p>In this article, we&#8217;ve covered the <code>params<\/code> keyword along with several ways of using it. We&#8217;ve also mentioned the risks that are associated with this feature.<\/p>\n<p>As always, we are responsible for choosing the right tools for the job, and hopefully, this article helps make an informed decision about using this feature. For other similar guidelines, be sure to check out our <a href=\"https:\/\/code-maze.com\/csharp-back-to-basics\/\" target=\"_blank\" rel=\"noopener\">C# basics series<\/a>.<\/p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this article, we&#8217;ll have a look at the\u00a0params keyword in C#. We&#8217;ll discuss the use cases and best practices. Let&#8217;s dive in! What Is the &#8216;Params&#8217; Keyword? params is a special keyword that allows passing a variable number of parameters into a method. It allows a nice, flexible syntax that helps us specify: One [&hellip;]<\/p>\n","protected":false},"author":36,"featured_media":62189,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[505,12],"tags":[1043,1086,1087],"class_list":["post-66340","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-basic","category-csharp","tag-array","tag-keyword","tag-params","et-has-post-format-content","et_post_format-et-post-format-standard"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Params Keyword in C# - Code Maze<\/title>\n<meta name=\"description\" content=\"This article covers the usage of the params keyword. It shows the use cases and discusses best practices for using it in project.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/code-maze.com\/csharp-params-keyword\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Params Keyword in C# - Code Maze\" \/>\n<meta property=\"og:description\" content=\"This article covers the usage of the params keyword. It shows the use cases and discusses best practices for using it in project.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/code-maze.com\/csharp-params-keyword\/\" \/>\n<meta property=\"og:site_name\" content=\"Code Maze\" \/>\n<meta property=\"article:published_time\" content=\"2022-02-22T06:30:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-02-22T06:43:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/code-maze.com\/wp-content\/uploads\/2021\/12\/social-csharp.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1100\" \/>\n\t<meta property=\"og:image:height\" content=\"620\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Bartosz Jarmu\u017c\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@CodeMazeBlog\" \/>\n<meta name=\"twitter:site\" content=\"@CodeMazeBlog\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Bartosz Jarmu\u017c\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\/\/code-maze.com\/csharp-params-keyword\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/code-maze.com\/csharp-params-keyword\/\"},\"author\":{\"name\":\"Bartosz Jarmu\u017c\",\"@id\":\"https:\/\/code-maze.com\/#\/schema\/person\/74b0a8002a6d03f953c9423ab4b6ff9b\"},\"headline\":\"Params Keyword in C#\",\"datePublished\":\"2022-02-22T06:30:17+00:00\",\"dateModified\":\"2022-02-22T06:43:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/code-maze.com\/csharp-params-keyword\/\"},\"wordCount\":704,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/code-maze.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/code-maze.com\/csharp-params-keyword\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/code-maze.com\/wp-content\/uploads\/2021\/12\/social-csharp.png\",\"keywords\":[\"Array\",\"keyword\",\"params\"],\"articleSection\":[\"Basic\",\"C#\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/code-maze.com\/csharp-params-keyword\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/code-maze.com\/csharp-params-keyword\/\",\"url\":\"https:\/\/code-maze.com\/csharp-params-keyword\/\",\"name\":\"Params Keyword in C# - Code Maze\",\"isPartOf\":{\"@id\":\"https:\/\/code-maze.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/code-maze.com\/csharp-params-keyword\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/code-maze.com\/csharp-params-keyword\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/code-maze.com\/wp-content\/uploads\/2021\/12\/social-csharp.png\",\"datePublished\":\"2022-02-22T06:30:17+00:00\",\"dateModified\":\"2022-02-22T06:43:45+00:00\",\"description\":\"This article covers the usage of the params keyword. It shows the use cases and discusses best practices for using it in project.\",\"breadcrumb\":{\"@id\":\"https:\/\/code-maze.com\/csharp-params-keyword\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/code-maze.com\/csharp-params-keyword\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/code-maze.com\/csharp-params-keyword\/#primaryimage\",\"url\":\"https:\/\/code-maze.com\/wp-content\/uploads\/2021\/12\/social-csharp.png\",\"contentUrl\":\"https:\/\/code-maze.com\/wp-content\/uploads\/2021\/12\/social-csharp.png\",\"width\":1100,\"height\":620,\"caption\":\"C# Development\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/code-maze.com\/csharp-params-keyword\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/code-maze.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Params Keyword in C#\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/code-maze.com\/#website\",\"url\":\"https:\/\/code-maze.com\/\",\"name\":\"Code Maze\",\"description\":\"Learn. Code. Succeed.\",\"publisher\":{\"@id\":\"https:\/\/code-maze.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/code-maze.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/code-maze.com\/#organization\",\"name\":\"Code Maze\",\"url\":\"https:\/\/code-maze.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/code-maze.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/code-maze.com\/wp-content\/uploads\/2020\/01\/Code-Maze-Only-Logo-Transparent-HRez.png\",\"contentUrl\":\"https:\/\/code-maze.com\/wp-content\/uploads\/2020\/01\/Code-Maze-Only-Logo-Transparent-HRez.png\",\"width\":3511,\"height\":3510,\"caption\":\"Code Maze\"},\"image\":{\"@id\":\"https:\/\/code-maze.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/CodeMazeBlog\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/code-maze.com\/#\/schema\/person\/74b0a8002a6d03f953c9423ab4b6ff9b\",\"name\":\"Bartosz Jarmu\u017c\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/code-maze.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/code-maze.com\/wp-content\/uploads\/2023\/12\/bartosz-profile-150x150.jpeg\",\"contentUrl\":\"https:\/\/code-maze.com\/wp-content\/uploads\/2023\/12\/bartosz-profile-150x150.jpeg\",\"caption\":\"Bartosz Jarmu\u017c\"},\"description\":\"Bartozs is well versed in maintenance and feature development of a backoffice microservices-based platforms. He also did business analysis, design, implementation and testing of customized solutions for automation of translation workflow for enterprises using translation management platforms.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/bartosz-jarmuz\/\"],\"url\":\"https:\/\/code-maze.com\/author\/bartosz\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Params Keyword in C# - Code Maze","description":"This article covers the usage of the params keyword. It shows the use cases and discusses best practices for using it in project.","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:\/\/code-maze.com\/csharp-params-keyword\/","og_locale":"en_US","og_type":"article","og_title":"Params Keyword in C# - Code Maze","og_description":"This article covers the usage of the params keyword. It shows the use cases and discusses best practices for using it in project.","og_url":"https:\/\/code-maze.com\/csharp-params-keyword\/","og_site_name":"Code Maze","article_published_time":"2022-02-22T06:30:17+00:00","article_modified_time":"2022-02-22T06:43:45+00:00","og_image":[{"width":1100,"height":620,"url":"https:\/\/code-maze.com\/wp-content\/uploads\/2021\/12\/social-csharp.png","type":"image\/png"}],"author":"Bartosz Jarmu\u017c","twitter_card":"summary_large_image","twitter_creator":"@CodeMazeBlog","twitter_site":"@CodeMazeBlog","twitter_misc":{"Written by":"Bartosz Jarmu\u017c","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/code-maze.com\/csharp-params-keyword\/#article","isPartOf":{"@id":"https:\/\/code-maze.com\/csharp-params-keyword\/"},"author":{"name":"Bartosz Jarmu\u017c","@id":"https:\/\/code-maze.com\/#\/schema\/person\/74b0a8002a6d03f953c9423ab4b6ff9b"},"headline":"Params Keyword in C#","datePublished":"2022-02-22T06:30:17+00:00","dateModified":"2022-02-22T06:43:45+00:00","mainEntityOfPage":{"@id":"https:\/\/code-maze.com\/csharp-params-keyword\/"},"wordCount":704,"commentCount":1,"publisher":{"@id":"https:\/\/code-maze.com\/#organization"},"image":{"@id":"https:\/\/code-maze.com\/csharp-params-keyword\/#primaryimage"},"thumbnailUrl":"https:\/\/code-maze.com\/wp-content\/uploads\/2021\/12\/social-csharp.png","keywords":["Array","keyword","params"],"articleSection":["Basic","C#"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/code-maze.com\/csharp-params-keyword\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/code-maze.com\/csharp-params-keyword\/","url":"https:\/\/code-maze.com\/csharp-params-keyword\/","name":"Params Keyword in C# - Code Maze","isPartOf":{"@id":"https:\/\/code-maze.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/code-maze.com\/csharp-params-keyword\/#primaryimage"},"image":{"@id":"https:\/\/code-maze.com\/csharp-params-keyword\/#primaryimage"},"thumbnailUrl":"https:\/\/code-maze.com\/wp-content\/uploads\/2021\/12\/social-csharp.png","datePublished":"2022-02-22T06:30:17+00:00","dateModified":"2022-02-22T06:43:45+00:00","description":"This article covers the usage of the params keyword. It shows the use cases and discusses best practices for using it in project.","breadcrumb":{"@id":"https:\/\/code-maze.com\/csharp-params-keyword\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/code-maze.com\/csharp-params-keyword\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/code-maze.com\/csharp-params-keyword\/#primaryimage","url":"https:\/\/code-maze.com\/wp-content\/uploads\/2021\/12\/social-csharp.png","contentUrl":"https:\/\/code-maze.com\/wp-content\/uploads\/2021\/12\/social-csharp.png","width":1100,"height":620,"caption":"C# Development"},{"@type":"BreadcrumbList","@id":"https:\/\/code-maze.com\/csharp-params-keyword\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/code-maze.com\/"},{"@type":"ListItem","position":2,"name":"Params Keyword in C#"}]},{"@type":"WebSite","@id":"https:\/\/code-maze.com\/#website","url":"https:\/\/code-maze.com\/","name":"Code Maze","description":"Learn. Code. Succeed.","publisher":{"@id":"https:\/\/code-maze.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/code-maze.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/code-maze.com\/#organization","name":"Code Maze","url":"https:\/\/code-maze.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/code-maze.com\/#\/schema\/logo\/image\/","url":"https:\/\/code-maze.com\/wp-content\/uploads\/2020\/01\/Code-Maze-Only-Logo-Transparent-HRez.png","contentUrl":"https:\/\/code-maze.com\/wp-content\/uploads\/2020\/01\/Code-Maze-Only-Logo-Transparent-HRez.png","width":3511,"height":3510,"caption":"Code Maze"},"image":{"@id":"https:\/\/code-maze.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/CodeMazeBlog"]},{"@type":"Person","@id":"https:\/\/code-maze.com\/#\/schema\/person\/74b0a8002a6d03f953c9423ab4b6ff9b","name":"Bartosz Jarmu\u017c","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/code-maze.com\/#\/schema\/person\/image\/","url":"https:\/\/code-maze.com\/wp-content\/uploads\/2023\/12\/bartosz-profile-150x150.jpeg","contentUrl":"https:\/\/code-maze.com\/wp-content\/uploads\/2023\/12\/bartosz-profile-150x150.jpeg","caption":"Bartosz Jarmu\u017c"},"description":"Bartozs is well versed in maintenance and feature development of a backoffice microservices-based platforms. He also did business analysis, design, implementation and testing of customized solutions for automation of translation workflow for enterprises using translation management platforms.","sameAs":["https:\/\/www.linkedin.com\/in\/bartosz-jarmuz\/"],"url":"https:\/\/code-maze.com\/author\/bartosz\/"}]}},"_links":{"self":[{"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/posts\/66340","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/users\/36"}],"replies":[{"embeddable":true,"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/comments?post=66340"}],"version-history":[{"count":4,"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/posts\/66340\/revisions"}],"predecessor-version":[{"id":66729,"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/posts\/66340\/revisions\/66729"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/media\/62189"}],"wp:attachment":[{"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/media?parent=66340"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/categories?post=66340"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/tags?post=66340"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}