5
根據文檔here和here,兩種工廠方法看起來可以互換。他們?工廠方法Expression.Parameter()和Expression.Variable()是否可以互換?
根據文檔here和here,兩種工廠方法看起來可以互換。他們?工廠方法Expression.Parameter()和Expression.Variable()是否可以互換?
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);
}