2016-03-23 49 views
0

İsteğe bağlı parametre olarak ref object bildirmeye çalışıyorum. Bu yüzden neden bunu yapamadığımı anladım. decesion benim yöntemi aşırı ve şimdi yeni bir sorun var:Ref mi yerel değişkene kopyalanamaz mı?

public Guid GetIdByEmployeeTypeName(string typeName) 
{ 
    return SurroundWithTryCatch(() => new EmployeeType().GetEmployerGroupIdByTypeName(typeName)); 
} 

public Guid GetIdByEmployeeTypeName(string typeName, ref EmployeeType employeeType) 
{ 
    EmployeeType type = employeeType; //The problem here. I can not use ref object inside an anonymous method. 
    return SurroundWithTryCatch(() => type.GetEmployerGroupIdByTypeName(typeName)); 
} 

nasıl kod optimize edebilirsiniz ?

+4

Ben sorabilir miyim yarı-ilgili soru, niçin 'EmployeeType' tarafından ref geçmeniz gerekiyor, bu bir yapı mı? – CodingGorilla

+0

Hiçbir şekilde 'employeeType' öğesine bir şey atamadınız. Neden burada 'ref' değiştiricisine ihtiyacınız var? –

+0

@SriramSakthivel Nesneyi kopyalamak için değil. C# ile aynı şeyi biliyorum ve C++ ile aynı şeyi biliyorum. – user3818229

cevap

0

Bunun iyi (ya da çok kötü) bir fikir söyleyemem, ama dönmek için kullanılmaz değere sahip bir gerektiren ref ve çağrı yöntemi bulunmadığından aşırı oluşturabilirsiniz:

public Guid GetIdByEmployeeTypeName(string typeName) 
{ 
    var tmp = new EmployeeType(); 
    return GetIdByEmployeeType(typeName, ref tmp); 
}