✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
🍎个人主页: 小嗷犬的博客
🍊个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。
🥭本文内容:C# 类型转换
@TOC
1.隐式转换
类型转换 即不同变量类型之间的相互转换。而 隐式转换 则是不同变量类型之间的自动转换。
在我们将一个小范围的值赋值给一个大范围的变量或者将一个低精度的值赋值给一个高精度的变量时,会发生这种转换:
using System;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
int i = 1;
long l = i;
Console.WriteLine(l);
}
}
}
这段代码将一个int
类型的1
赋值给了一个long
类型的变量,这里面就发生了隐式转换。这样的操作反过来是不行的:
using System;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
long l = 1;
int i = l;
Console.WriteLine(i);
}
}
}
第10行报错:``error CS0266: 无法将类型“long”隐式转换为“int”。存在一个显式转换(是否缺少
强制转换?)``同样的,
double
类型的变量也可以存储float
类型的值:
using System;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
float f = 1;
double d = f;
Console.WriteLine(d);
}
}
}
2.显示转换
显示转换 是将一个类型的值手动转换成目标类型的转换方式。我们可以通过括号加目标类型来进行强制转换:
using System;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
long l = 1;
int i = (int)l;
Console.WriteLine(i);
}
}
}
这样就不会报错。但是当大范围转小范围,或者是高精度转低精度的时候,就要考虑范围和精度的问题了。除此之外,我们还可以通过
Parse
来将字符串转换成对应类型的值:
using System;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
string s = "123";
int i = int.Parse(s);
Console.WriteLine(i);
}
}
}
前提是输入的字符串要能够直接转换成对应类型的值,而且要符合目标的存储范围。上面的两种方法常用于数值之间的转换和字符串转换,我们还可以使用
Convert
来进行数据之间的转换:
using System;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
int i = Convert.ToInt32("123");
Console.WriteLine(i);
}
}
}
使用Convert.To
+数据类型
可以实现更加精确的转换,同时,适用的变量类型也更多。如果是其他类型转换成字符串则更加简单,只需要使用
ToString
就行:
using System;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
string s = 3.1415.ToString();
Console.WriteLine(s);
}
}
}
在值之后直接添加
.ToString()
即可完成转换。