|
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
|
Tradução
Original
|
IConvertible Interface
Assembly: mscorlib (em mscorlib. dll)
using System; namespace ConsoleApplication2 { /// Class that implements IConvertible class Complex : IConvertible { double x; double y; public Complex(double x, double y) { this.x = x; this.y = y; } public TypeCode GetTypeCode() { return TypeCode.Object; } bool IConvertible.ToBoolean(IFormatProvider provider) { if( (x != 0.0) || (y != 0.0) ) return true; else return false; } double GetDoubleValue() { return Math.Sqrt(x*x + y*y); } byte IConvertible.ToByte(IFormatProvider provider) { return Convert.ToByte(GetDoubleValue()); } char IConvertible.ToChar(IFormatProvider provider) { return Convert.ToChar(GetDoubleValue()); } DateTime IConvertible.ToDateTime(IFormatProvider provider) { return Convert.ToDateTime(GetDoubleValue()); } decimal IConvertible.ToDecimal(IFormatProvider provider) { return Convert.ToDecimal(GetDoubleValue()); } double IConvertible.ToDouble(IFormatProvider provider) { return GetDoubleValue(); } short IConvertible.ToInt16(IFormatProvider provider) { return Convert.ToInt16(GetDoubleValue()); } int IConvertible.ToInt32(IFormatProvider provider) { return Convert.ToInt32(GetDoubleValue()); } long IConvertible.ToInt64(IFormatProvider provider) { return Convert.ToInt64(GetDoubleValue()); } sbyte IConvertible.ToSByte(IFormatProvider provider) { return Convert.ToSByte(GetDoubleValue()); } float IConvertible.ToSingle(IFormatProvider provider) { return Convert.ToSingle(GetDoubleValue()); } string IConvertible.ToString(IFormatProvider provider) { return "( " + x.ToString() + " , " + y.ToString() + " )"; } object IConvertible.ToType(Type conversionType, IFormatProvider provider) { return Convert.ChangeType(GetDoubleValue(),conversionType); } ushort IConvertible.ToUInt16(IFormatProvider provider) { return Convert.ToUInt16(GetDoubleValue()); } uint IConvertible.ToUInt32(IFormatProvider provider) { return Convert.ToUInt32(GetDoubleValue()); } ulong IConvertible.ToUInt64(IFormatProvider provider) { return Convert.ToUInt64(GetDoubleValue()); } } /// <summary> /// Summary description for Class1. /// </summary> class Class1 { static void Main(string[] args) { Complex testComplex = new Complex(4,7); WriteObjectInfo(testComplex); WriteObjectInfo(Convert.ToBoolean(testComplex)); WriteObjectInfo(Convert.ToDecimal(testComplex)); WriteObjectInfo(Convert.ToString(testComplex)); } static void WriteObjectInfo(object testObject) { TypeCode typeCode = Type.GetTypeCode( testObject.GetType() ); switch( typeCode ) { case TypeCode.Boolean: Console.WriteLine("Boolean: {0}", testObject); break; case TypeCode.Double: Console.WriteLine("Double: {0}", testObject); break; default: Console.WriteLine("{0}: {1}", typeCode.ToString(), testObject); break; } } } }
package ConsoleApplication2 ;
import System.*;
/// Class that implements IConvertible
class Complex implements IConvertible
{
private double x;
private double y;
public Complex(double x, double y)
{
this.x = x;
this.y = y;
} //Complex
public TypeCode GetTypeCode()
{
return TypeCode.Object;
} //GetTypeCode
public boolean ToBoolean(IFormatProvider provider)
{
if (x != 0.0 || y != 0.0) {
return true;
}
else {
return false;
}
} //ToBoolean
double GetDoubleValue()
{
return System.Math.Sqrt((x * x + y * y));
} //GetDoubleValue
public ubyte ToByte(IFormatProvider provider)
{
return Convert.ToByte(GetDoubleValue());
} //ToByte
public char ToChar(IFormatProvider provider)
{
return Convert.ToChar(GetDoubleValue());
} //ToChar
public DateTime ToDateTime(IFormatProvider provider)
{
return Convert.ToDateTime(GetDoubleValue());
} //ToDateTime
public System.Decimal ToDecimal(IFormatProvider provider)
{
return Convert.ToDecimal(GetDoubleValue());
} //ToDecimal
public double ToDouble(IFormatProvider provider)
{
return GetDoubleValue();
} //ToDouble
public short ToInt16(IFormatProvider provider)
{
return Convert.ToInt16(GetDoubleValue());
} //ToInt16
public int ToInt32(IFormatProvider provider)
{
return Convert.ToInt32(GetDoubleValue());
} //ToInt32
public long ToInt64(IFormatProvider provider)
{
return Convert.ToInt64(GetDoubleValue());
} //ToInt64
public byte ToSByte(IFormatProvider provider)
{
return Convert.ToSByte(GetDoubleValue());
} //ToSByte
public float ToSingle(IFormatProvider provider)
{
return Convert.ToSingle(GetDoubleValue());
} //ToSingle
public String ToString(IFormatProvider provider)
{
return "( " + System.Convert.ToString(x)
+ " , " + System.Convert.ToString(y)+ " )";
} //ToString
public Object ToType(Type conversionType, IFormatProvider provider)
{
return Convert.ChangeType(new Double(GetDoubleValue()),
conversionType);
} //ToType
public UInt16 ToUInt16(IFormatProvider provider)
{
return Convert.ToUInt16(GetDoubleValue());
} //ToUInt16
public UInt32 ToUInt32(IFormatProvider provider)
{
return Convert.ToUInt32(GetDoubleValue());
} //ToUInt32
public UInt64 ToUInt64(IFormatProvider provider)
{
return Convert.ToUInt64(GetDoubleValue());
} //ToUInt64
} //Complex
/// <summary>
/// Summary description for Class1.
/// </summary>
class Class1
{
public static void main(String[] args)
{
Complex testComplex = new Complex(4, 7);
WriteObjectInfo(testComplex);
WriteObjectInfo((System.Boolean)(Convert.ToBoolean(testComplex)));
WriteObjectInfo(Convert.ToDecimal(testComplex));
WriteObjectInfo(Convert.ToString(testComplex));
} //main
static void WriteObjectInfo(Object testObject)
{
TypeCode typeCode = Type.GetTypeCode(testObject.GetType());
switch (typeCode) {
case TypeCode.Boolean :
Console.WriteLine("Boolean: {0}", testObject);
break;
case TypeCode.Double :
Console.WriteLine("Double: {0}", testObject);
break;
default :
Console.WriteLine("{0}: {1}", typeCode.ToString(), testObject);
break;
}
} //WriteObjectInfo
} //Class1