/*
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);
}
}
ASP.NET & Csharp (C#)
ASP.NET & Csharp (C#) , Here you can find my posts about .NET c# .
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;
}
}