在装箱,拆箱过程中,首先涉及到的是数据的转换。发下午几个小时,研究了C#中数据类型之间的转换涉及的一些问题,希望大家给予意见!
1、数据类型的类名
这里讲的数据的类名指的是: Sytem.data.DbType对应的类型,我是这样理解的。
类名 System中相对应的类型
bool System.Boolean (布尔型,其值为 true 或者 false)
char System.Char (字符型,占有两个字节,表示 1 个 Unicode 字符)
byte System.Byte (字节型,占 1 字节,表示 8 位正整数,范围 0 ~ 255)
sbyte System.SByte (带符号字节型,占 1 字节,表示 8 位整数,范围 -128 ~ 127)
ushort System.UInt16 (无符号短整型,占 2 字节,表示 16 位正整数,范围 0 ~ 65,535)
uint System.UInt32 (无符号整型,占 4 字节,表示 32 位正整数,范围 0 ~ 4,294,967,295)
ulong System.UInt64 (无符号长整型,占 8 字节,表示 64 位正整数,范围 0 ~ 大约 10 的 20 次方)
short System.Int16 (短整型,占 2 字节,表示 16 位整数,范围 -32,768 ~ 32,767)
int System.Int32 (整型,占 4 字节,表示 32 位整数,范围 -2,147,483,648 到 2,147,483,647)
long System.Int64 (长整型,占 8 字节,表示 64 位整数,范围大约 -(10 的 19) 次方到 10 的 19 次方)
float System.Single (单精度浮点型,占 4 个字节)
double System.Double (双精度浮点型,占 8 个字节)
代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace TypeTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
bool bo = true;
byte b = 9;
char c = a;
sbyte sb = 8;
short s = 8;
int i= 7;
uint u = 6;
long l = 5;
this.textBox1.Text = typetest;
this.textBox1.AppendText(bool -> + bo.GetType().FullName + n);
this.textBox1.AppendText(byte -> + b.GetType().FullName + n);
this.textBox1.AppendText(char -> + c.GetType().FullName + n);
this.textBox1.AppendText(sbyte -> + sb.GetType().FullName + n);
this.textBox1.AppendText(short -> +s.GetType().FullName + n);
this.textBox1.AppendText(int -> + i.GetType().FullName + n);
this.textBox1.AppendText(uint -> +u.GetType().FullName + n);
this.textBox1.AppendText(long -> +l.GetType().FullName + n);
//其实类型就不写上,自己可以真接加上去!
}
}
}
结果可看到:
typetestbool -> System.Boolean
byte -> System.Byte
char -> System.Char
sbyte -> System.SByte
short -> System.Int16
int -> System.Int32
uint -> System.UInt32
long -> System.Int64
//
说明,以后所编的代码都是写在private void Form1_Load(object sender, EventArgs e)中的
2、Value Type间的转换。
bool bo = true;
byte b = 9;
char c = a;
sbyte sb = 8;
short s = 8;
int i = 7;
uint u = 6;
long l = 5;
this.textBox1.Text = datatype;
this.textBox1.AppendText(bool bo= + bo.ToString() + n);
this.textBox1.AppendText(byte b= + b.ToString() + n);
this.textBox1.AppendText(char c= + c.ToString() + n);
this.textBox1.AppendText(sbyte sb= + sb.ToString() + n);
this.textBox1.AppendText(short s= + s.ToString() + n);
this.textBox1.AppendText(int i= + i.ToString() + n);
this.textBox1.AppendText(uint u= + u.ToString() + n);
this.textBox1.AppendText(long l= + l.ToString() + n);
此段代码并没有转换数据类型,只说明它们的类型公别还是System.bool型…System.long型。
追加一行:int g = 1;
short h = g;
this.textBox1.AppendText(h = + h.ToString() + n);
结果编译报错:
G:ProjectsVisual C#ConvertForm1.cs(118): 无法将类型“int”隐式转换为“short”
数据要进行强制转换。
如上例修改如下:
short g = 1;
byte h = (byte) g; // 将 short 型的 g 的值强制转换成byte型后再赋给变量 h
this.textBox1.AppendText(h = + h.ToString() + n);
就可以了!
Short->byte
short g = 265; //265 = 255 + 10
byte h = (byte) g;
this.textBox1.AppendText(h = + h.ToString() + n);
注意:溢出问题!
3、ASCII<->Unicode
char ch = a;
short ii = 65;
this.textBox1.Text = ;
this.textBox1.AppendText(The ASCII code of + ch + is: + (short)ch + n);
this.textBox1.AppendText(ASCII
[1] [2] 下一页