{"id":493,"date":"2017-04-11T15:16:10","date_gmt":"2017-04-11T18:16:10","guid":{"rendered":"http:\/\/gianfratti.com\/?p=493"},"modified":"2017-04-11T15:17:59","modified_gmt":"2017-04-11T18:17:59","slug":"c-properties","status":"publish","type":"post","link":"http:\/\/gianfratti.com\/index.php\/c-properties\/","title":{"rendered":"C# Properties"},"content":{"rendered":"<p>Ol\u00e1 pessoal, Falaremos hoje sobre C# Properties.<\/p>\n<p>Uma propriedade (Property) \u00e9 um membro de uma classe que fornece um mecanismo flex\u00edvel para ler, gravar ou calcular o valor de um dado em particular.<br \/>\nAs propriedades permitem que uma classe exponha de uma maneira p\u00fablica a obten\u00e7\u00e3o e defini\u00e7\u00e3o destes valores.<!--more--><\/p>\n<p>Por ex. Temos a classe Carro, uma propriedade de carro \u00e9 sua cor, ou seja, Cor \u00e9 um atributo (propriedade) de Carro.<\/p>\n<p>Uma propriedade pode obter um valor de uma classe e tamb\u00e9m pode defini-lo, sendo assim temos propriedades Read\/Write ou apenas Readonly.<br \/>\nUm exemplo:<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n\/\/ Essa \u00e9 sua vari\u00e1vel interna (privada)\r\nprivate string _cor;\r\n\r\n\/\/ Essa \u00e9 sua propriedade p\u00fablica.\r\npublic string Cor\r\n{\r\n  get { return _cor; }\r\n  set { _cor = value; }\r\n}\r\n<\/pre>\n<p>Notaram que ao ler o valor (get) a propriedade retorna o valor da vari\u00e1vel interna e ao gravar (set) a vari\u00e1vel interna \u00e9 alterada para um novo valor.<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n\/\/ Fazendo Get\r\nstring CorCarro = Carro.Cor;\r\n\r\n\/\/ Fazendo Set\r\nCarro.Cor = &quot;Preto&quot;;\r\n<\/pre>\n<p>E se a propriedade for Readonly?<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n\/\/ Essa \u00e9 sua vari\u00e1vel interna (privada)\r\nprivate string _cor;\r\n\r\n\/\/ Essa \u00e9 sua propriedade p\u00fablica.\r\npublic string Cor\r\n{\r\n  get { return _cor; }\r\n}\r\n<\/pre>\n<p>Viram? Internamente n\u00e3o implementa o recurso do Set, ou seja, apenas podemos ler o estado, sem alter\u00e1-lo.<\/p>\n<p>Agora que j\u00e1 est\u00e1 entendido, mais novidade:<br \/>\nDesde o C# 3.0 (J\u00e1 estamos no 5.0) foi inclu\u00eddo o recurso de Automatic Properties (Propriedades Autom\u00e1ticas), ou seja, n\u00e3o necessitamos mais declarar o Get nem o Set, aquela vari\u00e1vel interna de controle tamb\u00e9m n\u00e3o (\u00e9 gerenciado autom\u00e1tico).<\/p>\n<p>Ent\u00e3o como fica?<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n\/\/ Essa \u00e9 sua propriedade Read\/Write.\r\npublic string Cor { get; set; }\r\n\r\n\/\/ Essa \u00e9 sua propriedade Readonly.\r\npublic string Cor { get; }\r\n<\/pre>\n<p>Menos c\u00f3digo, mais agilidade<\/p>\n<p><strong>Tem mais uma novidade, atrav\u00e9s do Visual Studio (2008 ou superior) podemos escrever rapidamente muitas propriedades utilizando o atalho \u201cprop\u201d<\/strong><\/p>\n<p><strong>\u00c9 muito simples, Apenas digite prop e d\u00ea Tab duas vezes.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ol\u00e1 pessoal, Falaremos hoje sobre C# Properties. Uma propriedade (Property) \u00e9 um membro de uma classe que fornece um mecanismo flex\u00edvel para ler, gravar ou calcular o valor de um dado em particular. As propriedades permitem que uma classe exponha de uma maneira p\u00fablica a obten\u00e7\u00e3o e defini\u00e7\u00e3o destes valores.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[2,15],"tags":[],"class_list":["post-493","post","type-post","status-publish","format-standard","hentry","category-net-framework","category-back-end"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/posts\/493","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/comments?post=493"}],"version-history":[{"count":2,"href":"http:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/posts\/493\/revisions"}],"predecessor-version":[{"id":495,"href":"http:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/posts\/493\/revisions\/495"}],"wp:attachment":[{"href":"http:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/media?parent=493"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/categories?post=493"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/tags?post=493"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}