در این مقاله به بررسی Returns Ref در سی شارپ میپردازیم.کلمه کلیدی ref در C# این قابلیت را به کد می دهد که یک متغیر مقداری را توسط رفرنس آن به عنوان پارامتر متد ارسال کند. برای استفاده از پارامتر ref، هم تعریف متد و هم فراخوانی متد باید به طور مستقیم از کلمه کلیدی ref استفاده کنند.
class Program { static void Main(string[] args) { long total = 0; AuthorByRefParam(5, 10, ref total); Console.WriteLine(total); Console.ReadKey(); } static void AuthorByRefParam(long a, long b, ref long total) { total = a + b; } }
متد AuthorByRefParam سه پارامتر با رفرنس را می پذیرد. برنامه فراخواننده متد را با مقداردهی اولیه یک متغیر فراخوانده و آن را به عنوان یک پارامتر با استفاده مستقیم کلمه کلیدی ref ارسال می کند.
در C# 7.0، مقدار می تواند برگردانده شده یا به صورت محلی توسط رفرنس ذخیره شود.
Returns Ref
C# 7.0 کلمه کلیدی ref بهبودیافته ای معرفی کرد که می تواند برای برگرداندن مقادیر توسط ref استفاده شود. همچنین Ref می تواند برای ذخیره مقادیر توسط ref در متغیرهای محلی نیز استفاده شود.
در کد زیر، متد FindAuthor مقدار رشته ای را توسط رفرنس برمی گرداند.
class Program { static void Main(string[] args) { // Create an array of author names string[] authors = { "جعفرنژاد قمی", "غلامرضا فصیح", "ابراهیم قلزم", "هاروی دیتل", "صادق زاده" }; // Call a method that returns by ref ref string author4 = ref new Program().FindAuthor(3, authors); Console.WriteLine("نویسنده اصلی:{۰}", author4); // Prints 4th author in array = Allen O'neill Console.WriteLine(); // Replace 4th author by new author. By Ref, it will update the array author4 = "دکتر پدرام"; // Print 4th author in array Console.WriteLine("نویسنده جایگزین:{۰}", authors[3]); //Prints Chris Sells Console.ReadKey(); } public ref string FindAuthor(int number, string[] names) { if (names.Length > 0) return ref names[number]; // return the storage location, not the value throw new IndexOutOfRangeException($"{یافت نشد (number)نام}"); }
خلاصه
Returns Ref مفهوم جدیدی است که در C# 7.0 معرفی شد. در این مقاله، یاد گرفتیم که چگونه از این ویژگی استفاده کنیم.
هیچ دیدگاهی نوشته نشده است.