Csharp/C Sharp/Data Types/cast
Содержание
Any object, value, or reference type that is convertible to an integral, char, enum, or string type is acceptable as the switch_expression
using System;
class Employee {
public Employee(string f_Emplid) {
m_Emplid = f_Emplid;
}
static public implicit operator string(Employee f_this) {
return f_this.m_Emplid;
}
private string m_Emplid;
}
class Starter {
static void Main() {
Employee newempl = new Employee("1234");
switch (newempl) {
case "1234":
Console.WriteLine("Employee 1234");
return;
case "5678":
Console.WriteLine("Employee 5678");
return;
default:
Console.WriteLine("Invalid employee");
return;
}
}
}
Conversions between Simple Types
using System;
public class MainClass {
public static void Main() {
double d = 2.9;
Console.WriteLine((int)d); // double-->int; prints 2
Console.WriteLine((int)(-d)); // double-->int; prints -2
uint seconds = (uint)(24 * 60 * 60); // int-->uint
double avgSecPerYear = 365.25 * seconds; // I uint-->double
float f = seconds; // IL uint-->float
long nationalDebt1 = 99999999999999;
double perSecond = 99999.14;
decimal perDay = seconds * (decimal)perSecond; // I uint-->decimal
double nd2 = nationalDebt1 + (double)perDay; // decimal-->double
long nd3 = (long)nd2; // double-->long
float nd4 = (float)nd2; // double-->float
}
}
explicit cast
using System;
class ExplicitConv {
static void Main() {
double a = 5.654321;
int b;
b = (int)a;
Console.WriteLine("The value is {0}", b);
}
}
Implicit cast
using System;
class ImplicitConversion {
public static void Main() {
byte a = 1;
int b = 1234;
int c = a; //Implicit cast
double d = b; //Implicit cast
Console.WriteLine("{0}", c);
Console.WriteLine("{0}", d);
}
}
Type convert
/*
Type Can Safely Be Converted To
Byte short, ushort, int, uint, long, ulong, float, double, decimal
Sbyte short, int, long, float, double, decimal
Short int, long, float, double, decimal
Ushort int, uint, long, ulong, float, double, decimal
Int long, float, double, decimal
Uint long, ulong, float, double, decimal
Long float, double, decimal
Ulong float, double, decimal
Float double
Char ushort, int, uint, long, ulong, float, double, decimal
*/