案例1:隐式转换
class Program
{
/// <summary>
/// 自动类型转换 隐式转换
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
//规则:对于数组类型,A的取值范围完全包含在B内
int i = 123;
//内部做了个一个自动的类型转换
float f = i;
double d = f;
long L = i;
short s = 30;
int t = s;
long L2 = s;
int num1 = 10, num2 = 20;
/*实参是整数,形参是单精度浮点数,会将整数做自动类型转换,
* 将整数转换为单精度浮点数,因为int的取值范围比float小*/
double F=Add(num1,num2);
Console.Write(F);
Console.ReadKey();
}
static double Add(float num1,float num2)
{
//float 取值范围比double小,所以相加后float自动转换为double类型
return num1 + num2;
}
}
————————————————————————————————————————————————————————————
案例2:强制转换
//显示转换(强制类型转换),注:强制类型转换可能会精度丢失
double Score = 58.5;
int bonus = 2;
int sum;
sum = (int)Score + bonus;
Console.WriteLine("总分为:{0}", sum);
Console.ReadKey();
——————————————————————————————————————————————————————————
案例3://以下数据类型的取值范围都小于或等于double类型所以发生隐式转换
double a = 2.2;
double e1=VD(a);
Console.WriteLine(e1);
int b = 2;
double e2 = VD(b);
Console.WriteLine(e2);
long c = 30;
double e3 = VD(c);
Console.WriteLine(e3);
short d = 3;
double e4 = VD(d);
Console.WriteLine(e4);
byte e = 22;
VD(e);
double e5 = VD(e);
Console.WriteLine(e5);
//string无法隐式转换为double,所以这里使用XXX.Parse方法转换
string str = "1,2,3";
double f=VD(double.Parse(str));
Console.WriteLine(f);
Console.ReadKey();
}
static double VD(double r)
{
return (4 / 3) * Math.PI * r * r * r;
---------------------------------------------------------
案例4:转换两种类型比较
int i = 100;
//通过ToString()方法,可以用于转换string类型
string str = i.ToString();
Console.WriteLine(str);
//xxx.Parese()方法用于将字符串转换为xxx类型
float f = float.Parse(str);
byte b = byte.Parse(str);
/*数据类型转换需要注意,例如将一个非数值的字符串转换成相应的数值类型,会发生格式化异常*/
//string str2 = "Welcome!";
//double d = double.Parse(str2);
Console.ReadKey();
——————————————————————————————————————————————
案例5:强制转换精度会丢失
double myDoudle = 85.63;
Console.WriteLine("转型前:{0}", myDoudle);
//使用强制类型转换,精度会丢失
int num3 = (int)myDoudle;
//使用Convert.ToInt32方法将小数转换成整数,会四舍五入
int num1 = Convert.ToInt32(myDoudle);
float num2=Convert.ToSingle(myDoudle);
string str = Convert.ToString(myDoudle);
Console.WriteLine("int\tfloat\tstring\t强制转换");
Console.WriteLine("{0}\t{1}\t{2}\t{3}",num1,num2,str,num3);
//
double d = 2.3;
float f = 2.1f;
long L = 20000;
int n1 = Convert.ToInt32(d);
int n2 = Convert.ToInt32(f);
int n3 = Convert.ToInt32(L);
Console.WriteLine(n1);
Console.WriteLine(n2);
Console.WriteLine(n3);
Console.ReadKey();
————————————————————————————————————————————————
案例6:ASCII编码常用
//编号:48-57表示(0-9)
//编号:65-90表示大写字母(A-Z)
//编号:97-122 表示小写字母(a-z)
char c = 'A';
int code = (int)c;
Console.WriteLine("将{0}字符转换为数字{1}", c, code);
char c1 = 'c';
int code1 = (int)c1;
Console.WriteLine("将{0}字符转换为数字{1}", c1, code1);
char c2 = (char)99;
Console.WriteLine("将{0}字符转换为数字{1}", 99, c2);
Console.ReadKey();
——————————————————————————————————————————————————————
案例7:占位符的重复使用
static void Main(string[] args)
{
string yi = "一";
string er = "二";
string san = "三";
string word = string.Format("独{0}无{1},{2}心{1}意,垂涎{2}尺,略知{0}{1},举{0}反{2}",yi,er,san);
string[] px = word.Split(',');
string str = string.Join(",", px);
Console.Write(str);
Console.ReadKey();