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