iki çok benzer anahtar kelimeler ref
vevardır: onun out
olarak tanımlanan çünkü, ancak dizinin kendisine y değeri atamak zorunda. Bunlardan
Hem referans olarak değer geçirmek, ama fark:
Eğer ref
kullandığınızda derleyici sizin değişken öncesinde yöntemini çağırarak atamak gerektirir.
out
kullanırken, bunu gerektirmez. Bu, parametrenin zaten doldurulduğunu kabul edemeyeceğiniz anlamına gelir. Yöntemin içindeki değerini okuyamayacaksınız.
double[,] myUnassignedDouble;
mynewMatrix(out myUnassignedDouble);
Açıkça değişken atanacak asla kötü:
sadece başkasının yöntem çağırmak için bu kodu yazdıysam ne olacağını hayal, sorunu göstermek için.
Bu üç seçenekli bırakır:
- atama değişken, yöntemini çağırın ve yöntemi içinde, bir kere atama değişkeni
void mynewMatrix(ref double[,] d)
- kullanmak ve kullanmak her zaman
void mynewMatrix(out double[,] d)
- Yöntemi her çağırdığınızda değişkeni atayın ve
void mynewMatrix(double[,] d)
'ü kullanın.
Üçüncü seçenek işe yarayacaktır çünkü şimdiye kadar değişkeninizi yeniden atamanız gerekmiyor. Açıkçası bu, kodunuz daha karmaşık hale geldikçe değişebilir. İlk olarak out
'u kullanmanın nedenlerini biliyor muydun?
Hata mesajı çok açık. Lütfen tam olarak neyi anlamadığınızı açıklayın. –
Hiçbir "newMAt" parametresi göremiyorum. – BoltClock