Yöntemlerin Dönüş Değeri Olarak Tuple'lar
out parametreleri olmadan birden çok sonuç döndürün.
Yöntemlerin Dönüş Değeri Olarak Tuple'lar, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C# Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C# Academy kursu toplamda 4 dersten oluşur.
Birden Çok Değer Döndürme
Bir yöntem yalnızca tek bir şey döndürebilir; ancak bir demet, bu tek şeyi birkaç değeri içerecek şekilde gruplayabilir ve out parametrelerine temiz bir alternatif sunar.
using System;
class Program
{
static (int, int) Divide(int a, int b) => (a / b, a % b);
static void Main()
{
var result = Divide(17, 5);
Console.WriteLine(result.Item1 + " r " + result.Item2);
}
}Adlandırılmış Demet Dönüş Türleri
Döndürülen öğeleri adlandırmak, yöntemin kendini açıklamasını ve çağrı noktasının okunabilir olmasını sağlar.
using System;
class Program
{
static (int Quotient, int Remainder) Divide(int a, int b)
{
return (a / b, a % b);
}
static void Main()
{
var r = Divide(17, 5);
Console.WriteLine("Q=" + r.Quotient + ", R=" + r.Remainder);
}
}Dönüş Değerini Ayrıştırma
Çağıran kod, döndürülen demeti doğrudan ayrı değişkenlere ayrıştırabilir.
using System;
class Program
{
static (double Min, double Max) Bounds(double[] data)
{
double min = data[0], max = data[0];
foreach (var d in data)
{
if (d < min) min = d;
if (d > max) max = d;
}
return (min, max);
}
static void Main()
{
var (lo, hi) = Bounds(new double[] { 3, 7, 1, 9, 4 });
Console.WriteLine("min=" + lo + ", max=" + hi);
}
}out Parametresi Seçeneği
Demetlerden önce, ek değerleri döndürmek için out parametreleri kullanılırdı. Bunlar çalışır; ancak bildirilmeleri ve çağrılmaları daha zahmetlidir.
using System;
class Program
{
static int Divide(int a, int b, out int remainder)
{
remainder = a % b;
return a / b;
}
static void Main()
{
int rem;
int q = Divide(17, 5, out rem);
Console.WriteLine("Q=" + q + ", R=" + rem);
}
}Demetler ve out: Okunabilirlik
Demet dönüşleri tüm sonuçları dönüş değerinde toplar ve ayrıştırmayla doğal biçimde okunur; bu nedenle basit durumlarda genellikle out yerine tercih edilir.
using System;
class Program
{
static (int Sum, int Count) Stats(int[] nums)
{
int sum = 0;
foreach (var n in nums) sum += n;
return (sum, nums.Length);
}
static void Main()
{
var (sum, count) = Stats(new[] { 2, 4, 6 });
Console.WriteLine("Sum=" + sum + ", Count=" + count);
}
}Bir Durum ve Bir Değer Döndürme
Yaygın bir yaklaşım, sonucu bir başarı göstergesiyle birlikte döndürmektir; bu, tek bir demette paketlenmiş Try kalıbına benzer.
using System;
class Program
{
static (bool Ok, int Value) ParseAge(string s)
{
if (int.TryParse(s, out int n) && n >= 0)
return (true, n);
return (false, 0);
}
static void Main()
{
var r = ParseAge("42");
Console.WriteLine(r.Ok ? "Parsed " + r.Value : "Invalid");
}
}out Ne Zaman Hâlâ Kullanışlıdır
Yerleşik Try kalıbında (int.TryParse) out hâlâ yerleşik bir kullanımdır; burada bir mantıksal sonuçla bir out değerinin birlikte kullanılması gelenekseldir.
using System;
class Program
{
static void Main()
{
if (int.TryParse("100", out int value))
Console.WriteLine("Got " + value);
else
Console.WriteLine("Not a number");
}
}Birden Çok Adlandırılmış Alan Döndürme
Demetler, tek kullanımlık bir sınıf oluşturmanızı gerektirmeden birden çok sonuca ölçeklenebilir.
using System;
class Program
{
static (int Min, int Max, double Avg) Analyze(int[] nums)
{
int min = nums[0], max = nums[0], sum = 0;
foreach (var n in nums)
{
if (n < min) min = n;
if (n > max) max = n;
sum += n;
}
return (min, max, (double)sum / nums.Length);
}
static void Main()
{
var a = Analyze(new[] { 4, 8, 2, 6 });
Console.WriteLine("min=" + a.Min + ", max=" + a.Max + ", avg=" + a.Avg);
}
}Sınıf Ne Zaman Tercih Edilmeli
Gruplanan verinin davranışı varsa, geniş ölçekte yeniden kullanılıyorsa veya doğrulama gerektiriyorsa, her yerde demet döndürmek yerine bir sınıf ya da kayıt tanımlayın.
using System;
class Program
{
// Fine as a tuple: small, local, no behavior
static (int W, int H) ParseSize(string s)
{
var parts = s.Split('x');
return (int.Parse(parts[0]), int.Parse(parts[1]));
}
static void Main()
{
var (w, h) = ParseSize("16x9");
Console.WriteLine(w + " by " + h);
}
}Döndürülen Demetleri Zincirleme
Döndürülen bir demeti satır içinde ayrıştırarak doğrudan başka bir hesaplamaya aktarabilirsiniz.
using System;
class Program
{
static (int, int) Split(int total) => (total / 2, total - total / 2);
static void Main()
{
var (a, b) = Split(7);
Console.WriteLine("Halves: " + a + " + " + b + " = " + (a + b));
}
}Birleştirelim
Adlandırılmış bir demet döndürmek, birkaç ilişkili değeri bir yöntemden ek bir törensellik olmadan geri vermenin modern ve okunabilir yoludur.
using System;
class Program
{
static (bool Found, int Index) Search(int[] arr, int target)
{
for (int i = 0; i < arr.Length; i++)
if (arr[i] == target) return (true, i);
return (false, -1);
}
static void Main()
{
var r = Search(new[] { 5, 8, 12 }, 8);
Console.WriteLine(r.Found ? "At index " + r.Index : "Not found");
}
}Kısa Kontrol
Demet dönüş değerlerini anlayıp anlamadığınızı sınayın.
Özet
Bir demet döndürmek, yöntemin aynı anda birkaç değer vermesini sağlar ve çoğu durumda out için daha temiz bir seçenektir. Açıklık için öğeleri adlandırın ve çağıran kodun bunları ayrıştırmasına izin verin. out kullanımını geleneksel Try kalıbıyla sınırlayın; veri davranış içeriyor veya geniş ölçekte yeniden kullanılıyorsa sınıf ya da kayıt tercih edin.
using System;
class Program
{
static (int Sum, int Max) Go(int[] n)
{
int s = 0, m = n[0];
foreach (var x in n) { s += x; if (x > m) m = x; }
return (s, m);
}
static void Main()
{
var (sum, max) = Go(new[] { 3, 9, 5 });
Console.WriteLine(sum + " / " + max);
}
}Sıkça Sorulan Sorular
“Yöntemlerin Dönüş Değeri Olarak Tuple'lar” dersi ücretsiz mi?
Evet — “Yöntemlerin Dönüş Değeri Olarak Tuple'lar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C# Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C# Academy kursu toplamda 4 dersten oluşur.
“Yöntemlerin Dönüş Değeri Olarak Tuple'lar” dersinde ne öğreneceğim?
out parametreleri olmadan birden çok sonuç döndürün. C# Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C# Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C# Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Yöntemlerin Dönüş Değeri Olarak Tuple'lar” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C# Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C# Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Değer Tuple'larının Temelleri
- Adlandırılmış Tuple Öğeleri
- Yapı Bozma
- Yöntemlerin Dönüş Değeri Olarak Tuple'lar