2014-02-20 40 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); 
}