C#编程(3_类型转换)
2020-12-13 13:59
标签:des style blog color io os ar 使用 strong 无论什么类型,所有的数据都是一系列的位,即0和1。变量的含义是通过解释这些程序的方式来传达的。最简单的是char类型,这种类型用一个数字表示Unicode字符集中的一个字符。实际上,这个数字与ushort的存储方式完全相同——它们都存储在0~65535之间。 然而,一般的,不同类型的变量使用不同的模式来表示数据,这意味着,即使把一系列的位从一种类型的变量移动到另一种类型的变量中,结果往往与预期不同。 这并不是数据位从一个变量到另一个变量的一对一的映射,而是需要对数据类型进行转换。类型转换有隐式转换和显示转换之分。 隐式转换:从A类型到B类型的转换可以再所有情况下进行,转换规则比较简单,可以让编译器执行。转换规则:任何类型A只要其取值范围完全包含在类型B的取值范围内,就可以隐式转换为类型B; 显示转换:从A类型到B类型的转换只能在某些情况下进行,转换规则比较复杂,需要进行某种类型处理。 请看下面例子: 如果编译这段代码,就会出现以下错误: Cannot implicitly convert type ‘short‘ to ‘byte‘. An explicit conversion exists(are you missing a cast?) 从而引入强制转换(强迫数据从一种类型转换成另一种类型)语法比较简单:,也就是改成: 这将把 显示的把数据从一种类型转换为另一种类型时,可能导致数据溢出,因为源变量的取值范围与目标变量的取值范围往往有出入,我们可以从其存储的数据本身(开始说了,实际是一系列的位)得到解析。 检查溢出,要用到两个关键字checked和uncheked,称为表达式溢出的检查上下文。 如果修改变量sourceVar的值,使其大于255,执行程序就会出错,并提示溢出。 当然,还有Convert命令,它也用于显示的类型转换,下面给出以上所有类型转换的一个实例: C#编程(3_类型转换) 标签:des style blog color io os ar 使用 strong 原文地址:http://www.cnblogs.com/haizhibin1989/p/4051344.html//尝试将short值转换成byte值
byte destinationVar;
short sourceVar=7;
destinationVar=sourceVar;
Console.WriteLine("sourceVar:{0}",sourceVar);
Console.WriteLine("destinationVar:{0}",destinationVar);
byte destinationVar;
short sourceVar=7;
destinationVar=(byte)sourceVar;
Console.WriteLine("sourceVar:{0}",sourceVar);
Console.WriteLine("destinationVar:{0}",destinationVar);
byte destinationVar;
short sourceVar=7;
destinationVar=checked((byte)sourceVar);
Console.WriteLine("sourceVar:{0}",sourceVar);
Console.WriteLine("destinationVar:{0}",destinationVar);
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
short shortResult, shortVar = 4;
int integerVar = 67;
long longResult;
float floatVar = 10.5F;
double doubleResult, doubleVar = 99.999;
string stringResult, stringVar = "17";
bool boolVar = true;
Console.WriteLine("Variable Conversion Examples\n");
doubleResult = floatVar * shortVar;
Console.WriteLine("Implicit,->double:{0}*{1}->{2}", floatVar, shortVar, doubleResult);
shortResult = (short)floatVar;
Console.WriteLine("Implicit,->short:{0}->{1}", floatVar, shortResult);
stringResult = Convert.ToString(boolVar) + Convert.ToString(doubleVar);
Console.WriteLine("Implicit,->string:\"{0}\"+\"{1}\"->{2}", boolVar, doubleVar, stringResult);
longResult = integerVar + Convert.ToInt64(stringVar);
Console.WriteLine("Mixed, ->long:{0}+{1}->{2}", integerVar, stringVar, longResult);
Console.ReadKey();
}
}
}
上一篇:数组无限分类树模型序列化