ICSharpCode.NRefactory.CSharp.Resolver.CSharpResolver.CastTo C# (CSharp) Method

CastTo() private method

private CastTo ( TypeCode targetType, bool isNullable, ResolveResult expression, bool allowNullableConstants ) : ResolveResult
targetType TypeCode
isNullable bool
expression ResolveResult
allowNullableConstants bool
return ResolveResult
		ResolveResult CastTo(TypeCode targetType, bool isNullable, ResolveResult expression, bool allowNullableConstants)
		{
			IType elementType = compilation.FindType(targetType);
			IType nullableType = MakeNullable(elementType, isNullable);
			if (nullableType.Equals(expression.Type))
				return expression;
			if (allowNullableConstants && expression.IsCompileTimeConstant) {
				if (expression.ConstantValue == null)
					return new ConstantResolveResult(nullableType, null);
				ResolveResult rr = ResolveCast(elementType, expression);
				if (rr.IsError)
					return rr;
				Debug.Assert(rr.IsCompileTimeConstant);
				return new ConstantResolveResult(nullableType, rr.ConstantValue);
			} else {
				return Convert(expression, nullableType,
				               isNullable ? Conversion.ImplicitNullableConversion : Conversion.ImplicitNumericConversion);
			}
		}
		#endregion
CSharpResolver