﻿
{"id":268,"date":"2012-03-21T00:28:04","date_gmt":"2012-03-21T00:28:04","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=268"},"modified":"2012-04-23T17:33:28","modified_gmt":"2012-04-23T17:33:28","slug":"c-metodlarda-ref-ve-params-kullanimi","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/c-metodlarda-ref-ve-params-kullanimi\/","title":{"rendered":"C# &#8211; Metodlarda ref ve params Kullan\u0131m\u0131"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Bu yaz\u0131mda C# programlama dilinde,metodlarda kullan\u0131lan ref ve params ifadelerinin kullan\u0131m\u0131ndan bahsedece\u011fim.Metodlar\u0131n parametre k\u0131s\u0131mlar\u0131nda kullan\u0131lan bu ifadeler belirli i\u015flemler i\u00e7in tercih edilir.Gelin \u015fimdi bunlar\u0131 g\u00f6relim.<br \/>\n<!--more--><span style=\"color: #ff0000;\"><strong>ref Anahtar S\u00f6zc\u00fc\u011f\u00fc<\/strong><\/span><br \/>\nref anahtar s\u00f6zc\u00fc\u011f\u00fc, referans\u0131n k\u0131salt\u0131lm\u0131\u015f halidir.Parametrelerin referans\u0131n\u0131 metoda vermek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<ul>\n<li>Metod i\u00e7inde ref ile tan\u0131mlanan parametreye de\u011fer g\u00f6nderilirken, de\u011ferin \u00f6n\u00fcne yine ref anahtar s\u00f6zc\u00fc\u011f\u00fc konmal\u0131d\u0131r.<\/li>\n<li>Metod i\u00e7inde ref ile tan\u0131ml\u0131 parametreye g\u00f6nderilen ifadenin de\u011feri de\u011fil,referans\u0131 g\u00f6nderilir.<\/li>\n<li>ref olmayan parametreye g\u00f6nderilen ifadenin de\u011feri g\u00f6nderilir.<\/li>\n<\/ul>\n<p>\u015eimdi a\u015fa\u011f\u0131daki kod blo\u011funu inceleyiniz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        private void Form1_Load(object sender, EventArgs e)\r\n        {\r\n            string isim = &quot;Gen\u00e7ay&quot;;\r\n            MessageBox.Show(Isim(isim) + &quot;,isim de\u011fi\u015fkeninin de\u011feri &quot; + isim);\r\n        }\r\n        private string \u0130sim(string isim)\r\n        {\r\n            isim = isim + &quot; Y\u0131ld\u0131z&quot;;\r\n            return isim;\r\n        }\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funu derleyip \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131z zaman mesaj kutusunda &#8220;Gen\u00e7ay Y\u0131ld\u0131z,isim de\u011fi\u015fkeninin de\u011feri Gen\u00e7ay&#8221; yazacakt\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        private void Form1_Load(object sender, EventArgs e)\r\n        {\r\n            string isim = &quot;Gen\u00e7ay&quot;;\r\n            MessageBox.Show(Isim_ref(ref isim) + &quot;,isim de\u011fi\u015fkeninin de\u011feri &quot; + isim);\r\n        }\r\n        private string Isim_ref(ref string isim)\r\n        {\r\n            isim = isim + &quot; Y\u0131ld\u0131z&quot;;\r\n            return isim;\r\n        }\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funu derleyip \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131z zaman ise, mesaj kutusunda &#8220;Gen\u00e7ay Y\u0131ld\u0131z,isim de\u011fi\u015fkeninin de\u011feri Gen\u00e7ay Y\u0131ld\u0131z&#8221; yaz\u0131s\u0131n\u0131 g\u00f6rece\u011fiz.Halbuki ben isim de\u011fi\u015fkenine &#8220;Gen\u00e7ay&#8221; de\u011fi\u015fkenini verdi\u011fim halde &#8220;Gen\u00e7ay Y\u0131ld\u0131z&#8221; de\u011ferini veriyor.Yukar\u0131da ref kullanmad\u0131\u011f\u0131m\u0131z durumla,ref kulland\u0131\u011f\u0131m\u0131z bu durumun aras\u0131ndaki fark nedir? diye sorarsan\u0131z,parametre referans olarak kullan\u0131l\u0131yor ve bir yerden bu parametre \u00e7a\u011fr\u0131laca\u011f\u0131 zaman o parametrenin referans de\u011feri geliyor.<br \/>\n<span style=\"color: #ff0000;\"><strong>params Anahtar S\u00f6zc\u00fc\u011f\u00fc<\/strong><\/span><br \/>\nMetod i\u00e7inde params ile tan\u0131mlanan diziye, d\u0131\u015far\u0131dan istenildi\u011fi say\u0131da eleman g\u00f6nderebiliriz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        private void Form1_Load(object sender, EventArgs e)\r\n        {\r\n            int toplam = Sayilar(3, 4, 5, 6, 3, 23, 2, 3);\r\n            MessageBox.Show(toplam.ToString());\r\n        }\r\n        public int Sayilar(params int&#x5B;] sayilar)\r\n        {\r\n            int toplam = 0;\r\n            for (int i = 0; i &lt; sayilar.Length; i++)\r\n            {\r\n                toplam += sayilar&#x5B;i];\r\n            }\r\n            return toplam;\r\n        }\r\n<\/pre>\n<p>Yukar\u0131da g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi parametresine params anahtar s\u00f6zc\u00fc\u011f\u00fcyle int dizisi alan Sayilar metodumuza istedi\u011fimiz kadar eleman g\u00f6nderiyorum.<br \/>\n\u0130stersek hi\u00e7 elemanda g\u00f6ndermeyebiliriz.<br \/>\nE\u011fer metod birden fazla parametre al\u0131yorsa ve bu parametrelerin i\u00e7inde params anahtar s\u00f6zc\u00fc\u011f\u00fcde mevcutsa , params l\u0131 anahtar s\u00f6zc\u00fck en son tan\u0131mlanmal\u0131d\u0131r.E\u011fer en son parametre olarak tan\u0131mlanmazsa e\u011fer, zaten bize hata verecektir.\u00d6rnek olarak a\u015fa\u011f\u0131daki kod blo\u011funu inceleyiniz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        private void Form1_Load(object sender, EventArgs e)\r\n        {\r\n            int toplam = Sayilar(3, 4, 5, 6, 3, 23, 2, 3);\r\n            MessageBox.Show(toplam.ToString());\r\n        }\r\n        public int Sayilar(int a, int b, int c, params int&#x5B;] sayilar)\r\n        {\r\n            int toplam = 0;\r\n            for (int i = 0; i &lt; sayilar.Length; i++)\r\n            {\r\n                toplam += sayilar&#x5B;i];\r\n            }\r\n            return toplam;\r\n        }\r\n<\/pre>\n<p>Yukar\u0131daki \u015fekilde Sayilar metodumuz d\u00f6rt adet parametre al\u0131yor ve bu parametrelerden birisi params anahtar s\u00f6zc\u00fckl\u00fcd\u00fcr.En sona yaz\u0131lm\u0131\u015ft\u0131r.Aksi halde hata verecektir.Formun load\u0131nda metodumuz ca\u011fr\u0131l\u0131rken,parametrelere verilen de\u011ferlerden s\u0131ras\u0131yla ilk \u00fc\u00e7\u00fc , int tipindeki a,b ve c de\u011fi\u015fkenlerine gidecekler, geri kalan\u0131 ise params anahtar s\u00f6zc\u00fckl\u00fc int de\u011fi\u015fkenine verilecektir.<br \/>\nBir sonraki yaz\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere,<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Bu yaz\u0131mda C# programlama dilinde,metodlarda kullan\u0131lan ref ve params ifadelerinin kullan\u0131m\u0131ndan bahsedece\u011fim.Metodlar\u0131n parametre k\u0131s\u0131mlar\u0131nda kullan\u0131lan bu ifadeler belirli i\u015flemler i\u00e7in tercih edilir.Gelin \u015fimdi bunlar\u0131 g\u00f6relim.<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[162,163],"class_list":["post-268","post","type-post","status-publish","format-standard","hentry","category-c-sharp-c","tag-params","tag-ref"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/268","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=268"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/268\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=268"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=268"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=268"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}