本文整理汇总了C#中IConvertible.ToUInt32方法的典型用法代码示例。如果您正苦于以下问题:C# IConvertible.ToUInt32方法的具体用法?C# IConvertible.ToUInt32怎么用?C# IConvertible.ToUInt32使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IConvertible
的用法示例。
在下文中一共展示了IConvertible.ToUInt32方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: DoRightShift
public static Literal DoRightShift(IConvertible ic1, IConvertible ic2, TypeCode code1, TypeCode code2, BinaryExpression binaryExpression){
TypeNode type = SystemTypes.Object;
object val = null;
int shift = 0;
switch (code2){
case TypeCode.SByte:
case TypeCode.Int16:
case TypeCode.Int32:
case TypeCode.Byte:
case TypeCode.UInt16:
shift = ic2.ToInt32(null) & 0x3f;
break;
case TypeCode.Int64:
shift = ((int)ic2.ToInt64(null)) & 0x3f;
break;
case TypeCode.UInt32:
case TypeCode.UInt64:
shift = ((int)ic2.ToUInt64(null)) & 0x3f;
break;
default: return null;
}
switch(code1){
case TypeCode.SByte:
case TypeCode.Byte:
case TypeCode.Int16:
case TypeCode.UInt16:
case TypeCode.Char:
case TypeCode.Int32:
int i = ic1.ToInt32(null);
val = i >> shift;
type = SystemTypes.Int32;
break;
case TypeCode.UInt32:
uint ui = ic1.ToUInt32(null);
val = ui >> shift;
type = SystemTypes.UInt32;
break;
case TypeCode.Int64:
long l = ic1.ToInt64(null);
val = l >> shift;
type = SystemTypes.Int64;
break;
case TypeCode.UInt64:
ulong ul = ic1.ToUInt64(null);
val = ul >> shift;
type = SystemTypes.UInt64;
break;
default: return null;
}
return new Literal(val, type, binaryExpression.SourceContext);
}
示例2: DoSubOvf
public static Literal DoSubOvf(IConvertible ic1, IConvertible ic2, TypeCode code1, TypeCode code2, BinaryExpression binaryExpression){
TypeNode type = SystemTypes.Object;
object val = null;
checked{switch(code1){
case TypeCode.SByte:
case TypeCode.Int16:
case TypeCode.Int32:
int i = ic1.ToInt32(null);
switch(code2){
case TypeCode.SByte:
case TypeCode.Int16:
case TypeCode.Int32:
case TypeCode.Byte:
case TypeCode.Char:
case TypeCode.UInt16:
val = i - ic2.ToInt32(null);
type = SystemTypes.Int32;
break;
case TypeCode.Int64:
case TypeCode.UInt32:
case TypeCode.UInt64:
val = i - ic2.ToInt64(null);
type = SystemTypes.Int64;
break;
case TypeCode.Single:
val = i - ic2.ToSingle(null);
type = SystemTypes.Single;
break;
case TypeCode.Double:
val = i - ic2.ToDouble(null);
type = SystemTypes.Double;
break;
case TypeCode.Decimal:
val = i - ic2.ToDecimal(null);
type = SystemTypes.Decimal;
break;
default: return null;
}
break;
case TypeCode.Byte:
case TypeCode.UInt16:
ushort us = ic1.ToUInt16(null);
switch(code2){
case TypeCode.SByte:
case TypeCode.Int16:
case TypeCode.Int32:
val = us - ic2.ToInt32(null);
type = SystemTypes.Int32;
break;
case TypeCode.Byte:
case TypeCode.UInt16:
case TypeCode.Char:
case TypeCode.UInt32:
val = us - ic2.ToUInt32(null);
type = SystemTypes.UInt32;
break;
case TypeCode.Int64:
val = us - ic2.ToInt64(null);
type = SystemTypes.Int64;
break;
case TypeCode.UInt64:
val = us - ic2.ToUInt64(null);
type = SystemTypes.UInt64;
break;
case TypeCode.Single:
case TypeCode.Double:
val = us - ic2.ToDouble(null);
type = SystemTypes.Double;
break;
case TypeCode.Decimal:
val = us - ic2.ToDecimal(null);
type = SystemTypes.Decimal;
break;
default: return null;
}
break;
case TypeCode.Char:
char ch = ic1.ToChar(null);
if (code2 != TypeCode.Char) goto default;
val = ch - ic2.ToChar(null);
type = SystemTypes.Int32;
break;
case TypeCode.UInt32:
uint ui = ic1.ToUInt32(null);
switch(code2){
case TypeCode.SByte:
case TypeCode.Int16:
case TypeCode.Int32:
case TypeCode.Int64:
val = ui - ic2.ToInt64(null);
type = SystemTypes.Int64;
break;
case TypeCode.Byte:
case TypeCode.UInt16:
case TypeCode.Char:
case TypeCode.UInt32:
val = ui - ic2.ToUInt32(null);
type = SystemTypes.UInt32;
break;
case TypeCode.UInt64:
//.........这里部分代码省略.........
示例3: DoLe
public static Literal DoLe(IConvertible ic1, IConvertible ic2, TypeCode code1, TypeCode code2, BinaryExpression binaryExpression){
TypeNode type = SystemTypes.Boolean;
object val = null;
switch(code1){
case TypeCode.SByte:
case TypeCode.Int16:
case TypeCode.Int32:
int i = ic1.ToInt32(null);
switch(code2){
case TypeCode.SByte:
case TypeCode.Int16:
case TypeCode.Int32:
case TypeCode.Byte:
case TypeCode.Char:
case TypeCode.UInt16:
val = i <= ic2.ToInt32(null);
break;
case TypeCode.Int64:
case TypeCode.UInt32:
val = ((long)i) <= ic2.ToInt64(null);
break;
case TypeCode.UInt64:
val = ((ulong)i) <= ic2.ToUInt64(null);
break;
case TypeCode.Single:
case TypeCode.Double:
case TypeCode.Decimal:
return null;
default: return null;
}
break;
case TypeCode.Byte:
case TypeCode.UInt16:
ushort us = ic1.ToUInt16(null);
switch(code2){
case TypeCode.SByte:
case TypeCode.Byte:
case TypeCode.Int16:
case TypeCode.UInt16:
case TypeCode.Char:
case TypeCode.Int32:
val = ((int)us) <= ic2.ToInt32(null);
break;
case TypeCode.UInt32:
val = ((uint)us) <= ic2.ToUInt32(null);
break;
case TypeCode.Int64:
val = ((long)us) <= ic2.ToInt64(null);
break;
case TypeCode.UInt64:
val = ((ulong)us) <= ic2.ToUInt64(null);
break;
case TypeCode.Single:
case TypeCode.Double:
case TypeCode.Decimal:
return null;
default: return null;
}
break;
case TypeCode.UInt32:
uint ui = ic1.ToUInt32(null);
switch(code2){
case TypeCode.SByte:
case TypeCode.Int16:
case TypeCode.Int32:
case TypeCode.Int64:
val = ((long)ui) <= ic2.ToInt64(null);
break;
case TypeCode.Byte:
case TypeCode.UInt16:
case TypeCode.Char:
case TypeCode.UInt32:
val = ui <= ic2.ToUInt32(null);
break;
case TypeCode.UInt64:
val = ((ulong)ui) <= ic2.ToUInt64(null);
break;
case TypeCode.Single:
case TypeCode.Double:
case TypeCode.Decimal:
return null;
default: return null;
}
break;
case TypeCode.Int64:
long l = ic1.ToInt64(null);
switch(code2){
case TypeCode.SByte:
case TypeCode.Int16:
case TypeCode.Int32:
case TypeCode.Int64:
case TypeCode.Byte:
case TypeCode.UInt16:
case TypeCode.Char:
case TypeCode.UInt32:
val = l <= ic2.ToInt64(null);
break;
case TypeCode.UInt64:
val = ((ulong)l) <= ic2.ToUInt64(null);
break;
//.........这里部分代码省略.........
示例4: DoOr
public static Literal DoOr(IConvertible ic1, IConvertible ic2, TypeCode code1, TypeCode code2, BinaryExpression binaryExpression){
TypeNode type = SystemTypes.Object;
object val = null;
switch(code1){
case TypeCode.SByte:
case TypeCode.Int16:
case TypeCode.Int32:
int i = ic1.ToInt32(null);
switch(code2){
case TypeCode.SByte:
case TypeCode.Int16:
case TypeCode.Int32:
case TypeCode.Byte:
case TypeCode.Char:
case TypeCode.UInt16:
val = i | ic2.ToInt32(null);
type = SystemTypes.Int32;
break;
case TypeCode.UInt32:
if (i >= 0){
val = ((uint)i) | ic2.ToUInt32(null);
type = SystemTypes.UInt32;
break;
}
goto case TypeCode.Int64;
case TypeCode.Int64:
long lng = i;
val = lng | ic2.ToInt64(null);
type = SystemTypes.Int64;
break;
case TypeCode.UInt64:
ulong ulng = (ulong) i;
val = ulng | ic2.ToUInt64(null);
type = SystemTypes.UInt64;
break;
case TypeCode.Single:
case TypeCode.Double:
case TypeCode.Decimal:
return null;
default: return null;
}
break;
case TypeCode.Byte:
case TypeCode.Char:
case TypeCode.UInt16:
ushort us = ic1.ToUInt16(null);
switch(code2){
case TypeCode.SByte:
case TypeCode.Int16:
case TypeCode.Int32:
case TypeCode.Byte:
case TypeCode.UInt16:
case TypeCode.Char:
val = ((int)us) | ic2.ToInt32(null);
type = SystemTypes.Int32;
break;
case TypeCode.UInt32:
val = ((uint)us) | ic2.ToUInt32(null);
type = SystemTypes.UInt32;
break;
case TypeCode.Int64:
val = ((long)us) | ic2.ToInt64(null);
type = SystemTypes.Int64;
break;
case TypeCode.UInt64:
val = ((ulong)us) | ic2.ToUInt64(null);
type = SystemTypes.UInt64;
break;
case TypeCode.Single:
case TypeCode.Double:
case TypeCode.Decimal:
return null;
default: return null;
}
break;
case TypeCode.UInt32:
uint ui = ic1.ToUInt32(null);
switch(code2){
case TypeCode.SByte:
case TypeCode.Int16:
case TypeCode.Int32:
i = ic2.ToInt32(null);
if (i >= 0){
val = ui | (uint)i;
type = SystemTypes.UInt32;
break;
}
goto case TypeCode.Int64;
case TypeCode.Int64:
val = ((long)ui) | ic2.ToInt64(null);
type = SystemTypes.Int64;
break;
case TypeCode.Byte:
case TypeCode.UInt16:
case TypeCode.Char:
case TypeCode.UInt32:
val = ui | ic2.ToUInt32(null);
type = SystemTypes.UInt32;
break;
case TypeCode.UInt64:
//.........这里部分代码省略.........
示例5: EncodeConvertible
protected void EncodeConvertible(IConvertible value, Stream output)
{
output.WriteByte((byte)value.GetTypeCode());
byte[] result;
switch (value.GetTypeCode())
{
// the following encode directly on the stream
case TypeCode.Boolean: output.WriteByte((byte)((bool)value ? 1 : 0)); return;
case TypeCode.Byte: output.WriteByte(value.ToByte(null)); return;
case TypeCode.SByte: output.WriteByte((byte)(value.ToSByte(null) + 128)); return;
case TypeCode.Object:
formatter.Serialize(output, value);
return;
case TypeCode.String: {
long lengthPosition = output.Position;
output.Write(new byte[4], 0, 4);
StreamWriter w = new StreamWriter(output, Encoding.UTF8);
w.Write((string)value);
w.Flush();
long savedPosition = output.Position;
uint payloadLength = (uint)(output.Position - lengthPosition - 4);
output.Position = lengthPosition;
output.Write(DataConverter.Converter.GetBytes(payloadLength), 0, 4);
output.Position = savedPosition;
return;
}
// the following obtain byte arrays which are dumped below
case TypeCode.Char: result = DataConverter.Converter.GetBytes(value.ToChar(null)); break;
case TypeCode.Single: result = DataConverter.Converter.GetBytes(value.ToSingle(null)); break;
case TypeCode.Double: result = DataConverter.Converter.GetBytes(value.ToDouble(null)); break;
case TypeCode.Int16: result = DataConverter.Converter.GetBytes(value.ToInt16(null)); break;
case TypeCode.Int32: result = DataConverter.Converter.GetBytes(value.ToInt32(null)); break;
case TypeCode.Int64: result = DataConverter.Converter.GetBytes(value.ToInt64(null)); break;
case TypeCode.UInt16: result = DataConverter.Converter.GetBytes(value.ToUInt16(null)); break;
case TypeCode.UInt32: result = DataConverter.Converter.GetBytes(value.ToUInt32(null)); break;
case TypeCode.UInt64: result = DataConverter.Converter.GetBytes(value.ToUInt64(null)); break;
case TypeCode.DateTime: result = DataConverter.Converter.GetBytes(((DateTime)value).ToBinary()); break;
default: throw new MarshallingException("Unhandled form of IConvertible: " + value.GetTypeCode());
}
output.Write(result, 0, result.Length);
}
示例6: DefaultToType
internal static object DefaultToType(IConvertible value, Type targetType, IFormatProvider provider)
{
if (targetType == null)
{
throw new ArgumentNullException("targetType");
}
RuntimeType left = targetType as RuntimeType;
if (left != null)
{
if (value.GetType() == targetType)
{
return value;
}
if (left == Convert.ConvertTypes[3])
{
return value.ToBoolean(provider);
}
if (left == Convert.ConvertTypes[4])
{
return value.ToChar(provider);
}
if (left == Convert.ConvertTypes[5])
{
return value.ToSByte(provider);
}
if (left == Convert.ConvertTypes[6])
{
return value.ToByte(provider);
}
if (left == Convert.ConvertTypes[7])
{
return value.ToInt16(provider);
}
if (left == Convert.ConvertTypes[8])
{
return value.ToUInt16(provider);
}
if (left == Convert.ConvertTypes[9])
{
return value.ToInt32(provider);
}
if (left == Convert.ConvertTypes[10])
{
return value.ToUInt32(provider);
}
if (left == Convert.ConvertTypes[11])
{
return value.ToInt64(provider);
}
if (left == Convert.ConvertTypes[12])
{
return value.ToUInt64(provider);
}
if (left == Convert.ConvertTypes[13])
{
return value.ToSingle(provider);
}
if (left == Convert.ConvertTypes[14])
{
return value.ToDouble(provider);
}
if (left == Convert.ConvertTypes[15])
{
return value.ToDecimal(provider);
}
if (left == Convert.ConvertTypes[16])
{
return value.ToDateTime(provider);
}
if (left == Convert.ConvertTypes[18])
{
return value.ToString(provider);
}
if (left == Convert.ConvertTypes[1])
{
return value;
}
if (left == Convert.EnumType)
{
return (Enum)value;
}
if (left == Convert.ConvertTypes[2])
{
throw new InvalidCastException(Environment.GetResourceString("InvalidCast_DBNull"));
}
if (left == Convert.ConvertTypes[0])
{
throw new InvalidCastException(Environment.GetResourceString("InvalidCast_Empty"));
}
}
throw new InvalidCastException(Environment.GetResourceString("InvalidCast_FromTo", new object[]
{
value.GetType().FullName,
targetType.FullName
}));
}
示例7: DefaultToType
internal static Object DefaultToType(IConvertible value, Type targetType, IFormatProvider provider)
{
Contract.Requires(value != null, "[Convert.DefaultToType]value!=null");
if (targetType == null)
{
throw new ArgumentNullException("targetType");
}
Contract.EndContractBlock();
if (value.GetType() == targetType)
return value;
if (targetType == CommonRuntimeTypes.Boolean)
return value.ToBoolean(provider);
if (targetType == CommonRuntimeTypes.Char)
return value.ToChar(provider);
if (targetType == CommonRuntimeTypes.SByte)
return value.ToSByte(provider);
if (targetType == CommonRuntimeTypes.Byte)
return value.ToByte(provider);
if (targetType == CommonRuntimeTypes.Int16)
return value.ToInt16(provider);
if (targetType == CommonRuntimeTypes.UInt16)
return value.ToUInt16(provider);
if (targetType == CommonRuntimeTypes.Int32)
return value.ToInt32(provider);
if (targetType == CommonRuntimeTypes.UInt32)
return value.ToUInt32(provider);
if (targetType == CommonRuntimeTypes.Int64)
return value.ToInt64(provider);
if (targetType == CommonRuntimeTypes.UInt64)
return value.ToUInt64(provider);
if (targetType == CommonRuntimeTypes.Single)
return value.ToSingle(provider);
if (targetType == CommonRuntimeTypes.Double)
return value.ToDouble(provider);
if (targetType == CommonRuntimeTypes.Decimal)
return value.ToDecimal(provider);
if (targetType == CommonRuntimeTypes.DateTime)
return value.ToDateTime(provider);
if (targetType == CommonRuntimeTypes.String)
return value.ToString(provider);
if (targetType == CommonRuntimeTypes.Object)
return (Object)value;
if (targetType == CommonRuntimeTypes.Enum)
return (Enum)value;
throw new InvalidCastException(SR.Format(SR.InvalidCast_FromTo, value.GetType().ToString(), targetType.Name));
}
示例8: ToUint32
internal static uint ToUint32(Object value, IConvertible ic){
switch (Convert.GetTypeCode(value, ic)){
case TypeCode.Empty: return 0;
case TypeCode.DBNull: return 0;
case TypeCode.Boolean: return ic.ToBoolean(null) ? (uint)1 : (uint)0;
case TypeCode.Char: return (uint)ic.ToChar(null);
case TypeCode.Byte:
case TypeCode.UInt16:
case TypeCode.UInt32: return ic.ToUInt32(null);
case TypeCode.UInt64: return (uint)ic.ToUInt64(null);
case TypeCode.SByte:
case TypeCode.Int16:
case TypeCode.Int32:
case TypeCode.Int64: return (uint)ic.ToInt64(null);
case TypeCode.Single: return (uint)ic.ToSingle(null);
case TypeCode.Double:
case TypeCode.Decimal: return (uint)ic.ToDouble(null);
case TypeCode.Object:
case TypeCode.DateTime:
Object pval = Convert.ToPrimitive(value, PreferredType.Number, ref ic);
if (pval != value)
return Convert.ToUint32(pval, ic);
else
return 0;
case TypeCode.String: return (uint)Convert.ToNumber(ic.ToString(null));
}
return 0; //should never get here
}
示例9: DefaultToType
internal static Object DefaultToType(IConvertible value, Type targetType, IFormatProvider provider) {
BCLDebug.Assert(value!=null, "[Convert.DefaultToType]value!=null");
if (targetType==null) {
throw new ArgumentNullException("targetType");
}
if (value.GetType()==targetType) {
return value;
}
if (targetType==ConvertTypes[(int)TypeCode.Boolean])
return value.ToBoolean(provider);
if (targetType==ConvertTypes[(int)TypeCode.Char])
return value.ToChar(provider);
if (targetType==ConvertTypes[(int)TypeCode.SByte])
return value.ToSByte(provider);
if (targetType==ConvertTypes[(int)TypeCode.Byte])
return value.ToByte(provider);
if (targetType==ConvertTypes[(int)TypeCode.Int16])
return value.ToInt16(provider);
if (targetType==ConvertTypes[(int)TypeCode.UInt16])
return value.ToUInt16(provider);
if (targetType==ConvertTypes[(int)TypeCode.Int32])
return value.ToInt32(provider);
if (targetType==ConvertTypes[(int)TypeCode.UInt32])
return value.ToUInt32(provider);
if (targetType==ConvertTypes[(int)TypeCode.Int64])
return value.ToInt64(provider);
if (targetType==ConvertTypes[(int)TypeCode.UInt64])
return value.ToUInt64(provider);
if (targetType==ConvertTypes[(int)TypeCode.Single])
return value.ToSingle(provider);
if (targetType==ConvertTypes[(int)TypeCode.Double])
return value.ToDouble(provider);
if (targetType==ConvertTypes[(int)TypeCode.Decimal])
return value.ToDecimal(provider);
if (targetType==ConvertTypes[(int)TypeCode.DateTime])
return value.ToDateTime(provider);
if (targetType==ConvertTypes[(int)TypeCode.String]) {
return value.ToString(provider);
}
if (targetType==ConvertTypes[(int)TypeCode.Object])
return (Object)value;
if (targetType==ConvertTypes[(int)TypeCode.DBNull])
throw new InvalidCastException(Environment.GetResourceString("InvalidCast_DBNull"));
if (targetType==ConvertTypes[(int)TypeCode.Empty])
throw new InvalidCastException(Environment.GetResourceString("InvalidCast_Empty"));
throw new InvalidCastException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("InvalidCast_FromTo"), value.GetType().FullName, targetType.FullName));
}
示例10: DefaultToType
// Default implementation of the "ToType" methods in
// the primitive classes like Byte, Int32, Boolean, etc.
internal static Object DefaultToType(IConvertible obj, Type targetType,
IFormatProvider provider,
bool recursive)
{
if(targetType != null)
{
if(obj.GetType() == targetType)
{
return obj;
}
else if(targetType == ConvertTypes[(int)TypeCode.Boolean])
{
return (Object)(obj.ToBoolean(provider));
}
else if(targetType == ConvertTypes[(int)TypeCode.Char])
{
return (Object)(obj.ToChar(provider));
}
else if(targetType == ConvertTypes[(int)TypeCode.SByte])
{
return (Object)(obj.ToSByte(provider));
}
else if(targetType == ConvertTypes[(int)TypeCode.Byte])
{
return (Object)(obj.ToByte(provider));
}
else if(targetType == ConvertTypes[(int)TypeCode.Int16])
{
return (Object)(obj.ToInt16(provider));
}
else if(targetType == ConvertTypes[(int)TypeCode.UInt16])
{
return (Object)(obj.ToUInt16(provider));
}
else if(targetType == ConvertTypes[(int)TypeCode.Int32])
{
return (Object)(obj.ToInt32(provider));
}
else if(targetType == ConvertTypes[(int)TypeCode.UInt32])
{
return (Object)(obj.ToUInt32(provider));
}
else if(targetType == ConvertTypes[(int)TypeCode.Int64])
{
return (Object)(obj.ToInt64(provider));
}
else if(targetType == ConvertTypes[(int)TypeCode.UInt64])
{
return (Object)(obj.ToUInt64(provider));
}
else if(targetType == ConvertTypes[(int)TypeCode.Single])
{
return (Object)(obj.ToSingle(provider));
}
else if(targetType == ConvertTypes[(int)TypeCode.Double])
{
return (Object)(obj.ToDouble(provider));
}
else if(targetType == ConvertTypes[(int)TypeCode.Decimal])
{
return (Object)(obj.ToDecimal(provider));
}
else if(targetType == ConvertTypes[(int)TypeCode.DateTime])
{
return (Object)(obj.ToDateTime(provider));
}
else if(targetType == ConvertTypes[(int)TypeCode.String])
{
return (Object)(obj.ToString(provider));
}
else if(targetType == ConvertTypes[(int)TypeCode.Object])
{
return obj;
}
else if(targetType == ConvertTypes[(int)TypeCode.Empty])
{
throw new InvalidCastException
(_("InvalidCast_Empty"));
}
else if(targetType == ConvertTypes[(int)TypeCode.DBNull])
{
throw new InvalidCastException
(_("InvalidCast_DBNull"));
}
else if(recursive)
{
throw new InvalidCastException
(String.Format
(_("InvalidCast_FromTo"),
obj.GetType().FullName, targetType.FullName));
}
else
{
// We weren't called from a "ToType" method,
// so we can use it to handle the default case.
return obj.ToType(targetType, provider);
}
}
//.........这里部分代码省略.........
示例11: Diff
static int Diff(IConvertible val1, IConvertible val2)
{
ulong diff;
switch (val1.GetTypeCode())
{
case TypeCode.UInt64:
diff = val2.ToUInt64(null) - val1.ToUInt64(null);
break;
case TypeCode.Int64:
diff = (ulong)(val2.ToInt64(null) - val1.ToInt64(null));
break;
case TypeCode.UInt32:
diff = val2.ToUInt32(null) - val1.ToUInt32(null);
break;
default:
diff = (ulong)(val2.ToInt32(null) - val1.ToInt32(null));
break;
}
if (diff >= int.MaxValue)
return int.MaxValue;
else
return (int)diff;
}
示例12: JScriptStrictEquals
//.........这里部分代码省略.........
case TypeCode.SByte:
case TypeCode.Byte:
case TypeCode.Int16:
case TypeCode.UInt16:
case TypeCode.Int32:
case TypeCode.UInt32:
case TypeCode.Int64: return us1 == ic2.ToInt64(null);
case TypeCode.UInt64: return us1 == ic2.ToUInt64(null);
case TypeCode.Single: return us1 == ic2.ToSingle(null);
case TypeCode.Double: return us1 == ic2.ToDouble(null);
case TypeCode.Decimal: return ((Decimal)us1) == ic2.ToDecimal(null);
}
return false;
case TypeCode.Int32:
Int32 i1 = ic1.ToInt32(null);
switch (t2){
case TypeCode.Char: return i1 == ic2.ToChar(null);
case TypeCode.SByte:
case TypeCode.Byte:
case TypeCode.Int16:
case TypeCode.UInt16:
case TypeCode.Int32:
case TypeCode.UInt32:
case TypeCode.Int64: return i1 == ic2.ToInt64(null);
case TypeCode.UInt64: return i1 >= 0 && ((UInt64)i1) == ic2.ToUInt64(null);
case TypeCode.Single: return i1 == ic2.ToSingle(null);
case TypeCode.Double: return i1 == ic2.ToDouble(null);
case TypeCode.Decimal: return ((Decimal)i1) == ic2.ToDecimal(null);
}
return false;
case TypeCode.UInt32:
UInt32 ui1 = ic1.ToUInt32(null);
switch (t2){
case TypeCode.Char: return ui1 == ic2.ToChar(null);
case TypeCode.SByte:
case TypeCode.Byte:
case TypeCode.Int16:
case TypeCode.UInt16:
case TypeCode.Int32:
case TypeCode.UInt32:
case TypeCode.Int64: return ui1 == ic2.ToInt64(null);
case TypeCode.UInt64: return ui1 == ic2.ToUInt64(null);
case TypeCode.Single: return ui1 == ic2.ToSingle(null);
case TypeCode.Double: return ui1 == ic2.ToDouble(null);
case TypeCode.Decimal: return ((Decimal)ui1) == ic2.ToDecimal(null);
}
return false;
case TypeCode.Int64:
Int64 l1 = ic1.ToInt64(null);
switch (t2){
case TypeCode.Char: return l1 == ic2.ToChar(null);
case TypeCode.SByte:
case TypeCode.Byte:
case TypeCode.Int16:
case TypeCode.UInt16:
case TypeCode.Int32:
case TypeCode.UInt32:
case TypeCode.Int64: return l1 == ic2.ToInt64(null);
case TypeCode.UInt64: return l1 >= 0 && ((UInt64)l1) == ic2.ToUInt64(null);
case TypeCode.Single: return l1 == ic2.ToSingle(null);
case TypeCode.Double: return l1 == ic2.ToDouble(null);
case TypeCode.Decimal: return ((Decimal)l1) == ic2.ToDecimal(null);
}
示例13: ExecuteBinaryOperator
private object ExecuteBinaryOperator(IConvertible left, IConvertible right, CodeBinaryOperatorType op)
{
TypeCode typeCode = left.GetTypeCode();
TypeCode code2 = right.GetTypeCode();
TypeCode[] codeArray = new TypeCode[] { TypeCode.Byte, TypeCode.Char, TypeCode.Int16, TypeCode.UInt16, TypeCode.Int32, TypeCode.UInt32, TypeCode.Int64, TypeCode.UInt64 };
int num = -1;
int num2 = -1;
for (int i = 0; i < codeArray.Length; i++)
{
if (typeCode == codeArray[i])
{
num = i;
}
if (code2 == codeArray[i])
{
num2 = i;
}
if ((num != -1) && (num2 != -1))
{
break;
}
}
if ((num == -1) || (num2 == -1))
{
return left;
}
int index = Math.Max(num, num2);
object obj2 = left;
switch (codeArray[index])
{
case TypeCode.Char:
{
char ch = left.ToChar(null);
char ch2 = right.ToChar(null);
if (op != CodeBinaryOperatorType.BitwiseOr)
{
obj2 = ch & ch2;
break;
}
obj2 = ch | ch2;
break;
}
case TypeCode.Byte:
{
byte num5 = left.ToByte(null);
byte num6 = right.ToByte(null);
if (op != CodeBinaryOperatorType.BitwiseOr)
{
obj2 = num5 & num6;
break;
}
obj2 = num5 | num6;
break;
}
case TypeCode.Int16:
{
short num7 = left.ToInt16(null);
short num8 = right.ToInt16(null);
if (op != CodeBinaryOperatorType.BitwiseOr)
{
obj2 = num7 & num8;
break;
}
obj2 = (short) (((ushort) num7) | ((ushort) num8));
break;
}
case TypeCode.UInt16:
{
ushort num9 = left.ToUInt16(null);
ushort num10 = right.ToUInt16(null);
if (op != CodeBinaryOperatorType.BitwiseOr)
{
obj2 = num9 & num10;
break;
}
obj2 = num9 | num10;
break;
}
case TypeCode.Int32:
{
int num11 = left.ToInt32(null);
int num12 = right.ToInt32(null);
if (op != CodeBinaryOperatorType.BitwiseOr)
{
obj2 = num11 & num12;
break;
}
obj2 = num11 | num12;
break;
}
case TypeCode.UInt32:
{
uint num13 = left.ToUInt32(null);
uint num14 = right.ToUInt32(null);
if (op != CodeBinaryOperatorType.BitwiseOr)
{
obj2 = num13 & num14;
break;
}
obj2 = num13 | num14;
//.........这里部分代码省略.........
示例14: DoAddOvf
public static Literal DoAddOvf(IConvertible ic1, IConvertible ic2, TypeCode code1, TypeCode code2, BinaryExpression binaryExpression){
TypeNode type = SystemTypes.Object;
object val = null;
checked{switch(code1){
case TypeCode.SByte:
case TypeCode.Int16:
case TypeCode.Int32:
int i = ic1.ToInt32(null);
switch(code2){
case TypeCode.SByte:
case TypeCode.Int16:
case TypeCode.Int32:
case TypeCode.Byte:
case TypeCode.Char:
case TypeCode.UInt16:
val = i + ic2.ToInt32(null);
type = SystemTypes.Int32;
break;
case TypeCode.Int64:
case TypeCode.UInt32:
case TypeCode.UInt64:
val = i + ic2.ToInt64(null);
type = SystemTypes.Int64;
break;
case TypeCode.Single:
val = i + ic2.ToSingle(null);
type = SystemTypes.Single;
break;
case TypeCode.Double:
val = i + ic2.ToDouble(null);
type = SystemTypes.Double;
break;
case TypeCode.Decimal:
val = i + ic2.ToDecimal(null);
type = SystemTypes.Decimal;
break;
default: return null;
}
break;
case TypeCode.Byte:
case TypeCode.UInt16:
ushort us = ic1.ToUInt16(null);
switch(code2){
case TypeCode.SByte:
case TypeCode.Int16:
case TypeCode.Int32:
val = us + ic2.ToInt32(null);
type = SystemTypes.Int32;
break;
case TypeCode.Byte:
case TypeCode.UInt16:
case TypeCode.Char:
case TypeCode.UInt32:
val = us + ic2.ToUInt32(null);
type = SystemTypes.UInt32;
break;
case TypeCode.Int64:
val = us + ic2.ToInt64(null);
type = SystemTypes.Int64;
break;
case TypeCode.UInt64:
val = us + ic2.ToUInt64(null);
type = SystemTypes.UInt64;
break;
case TypeCode.Single:
val = us + ic2.ToSingle(null);
type = SystemTypes.Single;
break;
case TypeCode.Double:
val = us + ic2.ToDouble(null);
type = SystemTypes.Double;
break;
case TypeCode.Decimal:
val = us + ic2.ToDecimal(null);
type = SystemTypes.Decimal;
break;
default: return null;
}
break;
case TypeCode.UInt32:
uint ui = ic1.ToUInt32(null);
switch(code2){
case TypeCode.SByte:
case TypeCode.Int16:
case TypeCode.Int32:
case TypeCode.Int64:
val = ui + ic2.ToInt64(null);
type = SystemTypes.Int64;
break;
case TypeCode.Byte:
case TypeCode.UInt16:
case TypeCode.Char:
case TypeCode.UInt32:
val = ui + ic2.ToUInt32(null);
type = SystemTypes.UInt32;
break;
case TypeCode.UInt64:
val = ui + ic2.ToUInt64(null);
type = SystemTypes.UInt64;
break;
//.........这里部分代码省略.........
示例15: JScriptStrictEquals
//.........这里部分代码省略.........
case TypeCode.Int32:
{
int num5 = ic1.ToInt32(null);
switch (t2)
{
case TypeCode.Char:
return (num5 == ic2.ToChar(null));
case TypeCode.SByte:
case TypeCode.Byte:
case TypeCode.Int16:
case TypeCode.UInt16:
case TypeCode.Int32:
case TypeCode.UInt32:
case TypeCode.Int64:
return (num5 == ic2.ToInt64(null));
case TypeCode.UInt64:
return ((num5 >= 0) && (num5 == ic2.ToUInt64(null)));
case TypeCode.Single:
return (num5 == ic2.ToSingle(null));
case TypeCode.Double:
return (num5 == ic2.ToDouble(null));
case TypeCode.Decimal:
return (num5 == ic2.ToDecimal(null));
}
return false;
}
case TypeCode.UInt32:
{
uint num6 = ic1.ToUInt32(null);
switch (t2)
{
case TypeCode.Char:
return (num6 == ic2.ToChar(null));
case TypeCode.SByte:
case TypeCode.Byte:
case TypeCode.Int16:
case TypeCode.UInt16:
case TypeCode.Int32:
case TypeCode.UInt32:
case TypeCode.Int64:
return (num6 == ic2.ToInt64(null));
case TypeCode.UInt64:
return (num6 == ic2.ToUInt64(null));
case TypeCode.Single:
return (num6 == ic2.ToSingle(null));
case TypeCode.Double:
return (num6 == ic2.ToDouble(null));
case TypeCode.Decimal:
return (num6 == ic2.ToDecimal(null));
}
return false;
}
case TypeCode.Int64:
num7 = ic1.ToInt64(null);
switch (t2)
{