2014-02-20 3 views

ответ

5

Expression.Parameter() поддерживает типы ByRef (то есть параметр ref), тогда как Expression.Variable() выдаст исключение, если оно задано.

Они в остальном идентичны, но это деталь реализации, и вы не должны полагаться на него:

public static ParameterExpression Parameter(Type type, string name) 
{ 
    bool isByRef = type.IsByRef; 
    if (isByRef) 
    { 
     type = type.GetElementType(); 
    } 
    return ParameterExpression.Make(type, name, isByRef); 
} 

public static ParameterExpression Variable(Type type, string name) 
{ 
    if (type.IsByRef) 
    { 
     throw Error.TypeMustNotBeByRef(); 
    } 
    return ParameterExpression.Make(type, name, false); 
} 
Смежные вопросы