Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 44 additions & 43 deletions snippets/csharp/System/Convert/ChangeType/changetype00.cs
Original file line number Diff line number Diff line change
@@ -1,59 +1,60 @@
// <Snippet1>
using System;
using System.Globalization;

public class InterceptProvider : IFormatProvider
{
public object GetFormat(Type formatType)
{
if (formatType == typeof(NumberFormatInfo)) {
Console.WriteLine(" Returning a fr-FR numeric format provider.");
return new System.Globalization.CultureInfo("fr-FR").NumberFormat;
}
else if (formatType == typeof(DateTimeFormatInfo)) {
Console.WriteLine(" Returning an en-US date/time format provider.");
return new System.Globalization.CultureInfo("en-US").DateTimeFormat;
}
else {
Console.WriteLine(" Requesting a format provider of {0}.", formatType.Name);
return null;
}
}
public object GetFormat(Type formatType)
{
if (formatType == typeof(NumberFormatInfo))
{
Console.WriteLine(" Returning a fr-FR numeric format provider.");
return new System.Globalization.CultureInfo("fr-FR").NumberFormat;
}
else if (formatType == typeof(DateTimeFormatInfo))
{
Console.WriteLine(" Returning an en-US date/time format provider.");
return new System.Globalization.CultureInfo("en-US").DateTimeFormat;
}
else
{
Console.WriteLine($" Requesting a format provider of {formatType.Name}.");
return null;
}
}
}

public class Example
{
public static void Main()
{
object[] values = { 103.5d, new DateTime(2010, 12, 26, 14, 34, 0) };
IFormatProvider provider = new InterceptProvider();
public static void Main()
{
object[] values = { 103.5d, new DateTime(2010, 12, 26, 14, 34, 0) };
IFormatProvider provider = new InterceptProvider();

// Convert value to each of the types represented in TypeCode enum.
foreach (object value in values)
{
// Iterate types in TypeCode enum.
foreach (TypeCode enumType in ((TypeCode[]) Enum.GetValues(typeof(TypeCode))))
{
if (enumType == TypeCode.DBNull || enumType == TypeCode.Empty) continue;
// Convert value to each of the types represented in TypeCode enum.
foreach (object value in values)
{
// Iterate types in TypeCode enum.
foreach (TypeCode enumType in ((TypeCode[])Enum.GetValues(typeof(TypeCode))))
{
if (enumType == TypeCode.DBNull || enumType == TypeCode.Empty) continue;

try {
Console.WriteLine("{0} ({1}) --> {2} ({3}).",
value, value.GetType().Name,
Convert.ChangeType(value, enumType, provider),
enumType.ToString());
try
{
Console.WriteLine($"{value} ({value.GetType().Name}) --> {Convert.ChangeType(value, enumType, provider)} ({enumType.ToString()}).");
}
catch (InvalidCastException)
{
Console.WriteLine($"Cannot convert a {value.GetType().Name} to a {enumType.ToString()}");
}
catch (OverflowException)
{
Console.WriteLine($"Overflow: {value} is out of the range of a {enumType.ToString()}");
}
}
catch (InvalidCastException) {
Console.WriteLine("Cannot convert a {0} to a {1}",
value.GetType().Name, enumType.ToString());
}
catch (OverflowException) {
Console.WriteLine("Overflow: {0} is out of the range of a {1}",
value, enumType.ToString());
}
}
Console.WriteLine();
}
}
Console.WriteLine();
}
}
}
// The example displays the following output:
// 103.5 (Double) --> 103.5 (Object).
Expand Down
12 changes: 7 additions & 5 deletions snippets/csharp/System/Convert/ChangeType/changetype01.cs
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
// <Snippet2>
using System;

public class ChangeTypeTest {
public static void Main() {
public class ChangeTypeTest
{
public static void Main()
{

Double d = -2.345;
double d = -2.345;
int i = (int)Convert.ChangeType(d, TypeCode.Int32);

Console.WriteLine("The Double {0} when converted to an Int32 is {1}", d, i);
Console.WriteLine($"The Double {d} when converted to an Int32 is {i}");

string s = "12/12/2009";
DateTime dt = (DateTime)Convert.ChangeType(s, typeof(DateTime));

Console.WriteLine("The String {0} when converted to a Date is {1}", s, dt);
Console.WriteLine($"The String {s} when converted to a Date is {dt}");
}
}
// The example displays the following output:
Expand Down
Loading
Loading