/* A Programmer's Introduction to C# (Second Edition) by Eric Gunnerson Publisher: Apress L.P. ISBN: 1-893115-62-3 */ // 15 - ConversionsConversions of Classes (Reference Types)To an Interface // the Object Might Implement // copyright 2000 Eric Gunnerson using System; interface IDebugDump { string DumpObject(); } class Simple { public Simple(int value) { this.value = value; } public override string ToString() { return(value.ToString()); } int value; } class Complicated: IDebugDump { public Complicated(string name) { this.name = name; } public override string ToString() { return(name); } string IDebugDump.DumpObject() { return(String.Format( "{0} Latency: {1} Requests: {2} Failures: {3} ", new object[] {name, latency, requestCount, failedCount} )); } string name; int latency = 0; int requestCount = 0; int failedCount = 0; } public class ToanInterfacetheObjectMightImplement { public static void DoConsoleDump(params object[] arr) { foreach (object o in arr) { IDebugDump dumper = o as IDebugDump; if (dumper != null) Console.WriteLine("{0}", dumper.DumpObject()); else Console.WriteLine("{0}", o); } } public static void Main() { Simple s = new Simple(13); Complicated c = new Complicated("Tracking Test"); DoConsoleDump(s, c); } }
Author: coder
Conversions:Numeric Types:Explicit Numeric Conversions
using System; public class ExplicitNumericConversions { public static void Main() { uint value1 = 312; byte value2 = (byte) value1; Console.WriteLine("Value2: {0}", value2); } }
Conversions:Numeric Types:Conversions and Member Lookup
using System; class Conv { public static void Process(sbyte value) { Console.WriteLine("sbyte {0}", value); } public static void Process(short value) { Console.WriteLine("short {0}", value); } public static void Process(int value) { Console.WriteLine("int {0}", value); } } public class ConversionsandMemberLookup { public static void Main() { int value1 = 2; sbyte value2 = 1; Conv.Process(value1); Conv.Process(value2); } }
Conversions:Numeric Types:Checked Conversions
using System; public class UNCheckedConversions { public static void Main() { uint value1 = 312; byte value2; value2 = unchecked((byte) value1); // never checked value2 = (byte) value1; // checked if /checked value2 = checked((byte) value1); // always checked } }
Numeric Types: Checked Conversions
using System; public class CheckedConversions { public static void Main() { checked { uint value1 = 312; byte value2 = (byte) value1; Console.WriteLine("Value: {0}", value2); } } }
Conversions: Numeric Types
public class NumericTypesConversion { public static void Main() { // all implicit sbyte v = 55; short v2 = v; int v3 = v2; long v4 = v3; // explicit to "smaller" types v3 = (int) v4; v2 = (short) v3; v = (sbyte) v2; } }
User-Defined Conversions: How It Works: Conversion Lookup
// This demo has compiling error class S { } class TBase { } class T: TBase { public static implicit operator T(S s) { return(new T()); } } public class ConversionLookup1 { public static void Main() { S myS = new S(); TBase tb = (TBase) myS; } }