是否可以不将 ref 复制到局部变量?

Is it possible do not copy ref to local variable?

我正在尝试将 ref object 声明为可选参数。所以我明白为什么我不能那样做。决定是重载我的方法,现在我遇到了一个新问题:

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));
}

如何优化我的代码?

我不会说这是一个好(或非常坏)的主意,但您可以在没有 ref 的情况下创建重载并调用需要一个具有未用于 return 的值的方法:

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