Derleyici, aşağıdaki koddaki resultingThing
'un atanmadan önce kullanıldığından şikayetçidir.Neden C# derleyicisi 'getiri dönüşü' ve dinamikten önce 'atanmamış bir değişken kullanması' iddiasında bulunuyor?
private IEnumerable<IThing> FindThings(dynamic spec)
{
if (spec == null)
yield break;
IThing resultingThing;
if (spec.Something > 0 && dictionary.TryGetValue(spec.Something, out resultingThing))
yield return resultingThing;
else
// ...
}
Neden bunu iddia ediyor?
I (örneğin sadece return IEnumerable<IThing>
), fakat dinamik parametresi ile bir verim kullanımları var olan yöntemin başka bir versiyonunu çalıştılar ve dinamik olan yöntemin bir versiyonu çalıştık geçmedi (örneğin C# nin önceki sürümlerinde yaptığımız). Bu derleme.
:
o Derleme dava? – adrianbanks
Hayır, 'result' içinde' result' kullanılmıyor. Ayrıca, 'null' olarak başlatılması, derleyici hatasını beklendiği gibi kurtarır. – Kit
Gerçekten ideal değil, ama 'default' anahtar sözcüğünü kullanarak 'resultThing''i başlatmayı deneyin, yani varsayılan (IThing)'. Referans türleri için bu 'null' olmalıdır; Değer türleri için, varsayılan yapılandırılmış türün eşdeğeri olmalıdır. –