因为在.net中两种类型的机制和使用是有区别的
解决方案 »
- 线程如何操作界面?
- 再开一帖100分关于DiscuzNT那个弹出框的问题?100分
- 在PictureBox中显示图像,然后我鼠标圈选某一局部图像,怎么显示圈选的矩形框?
- 今日试验研究证明:时钟控件执行事件在Mutex互斥情况下不受影响!欢迎进来讨论。
- C# 操作xml与对象转化用什么方法?
- 关于参数传递,高人进,在线等,谢谢!
- delphi下调用读写卡器的dll文件代码,帮忙翻译成C#!谢谢
- Config文件在编译时无法自动拷贝到bin/debug/文件夹内?
- MDI中子窗体关闭后 主窗体有何事件激发?
- 连接数据库的配置文件?
- C#查询MYsql的问题,varbinary被识别成String类型!!
- 截取从汉字开始后的字符串
值类型是在栈中分配内存,在声明时初始化才能使用,不能为null。
值类型超出作用范围系统自动释放内存。
主要由两类组成:结构,枚举(enum),结构分为以下几类:
整型(Sbyte、Byte、Char、Short、Ushort、Int、Uint、Long、Ulong)
浮点型(Float、Double)
decimal
bool
用户定义的结构(struct) 引用类型。
引用类型在堆中分配内存,初始化时默认为null。
引用类型是通过垃圾回收机制进行回收。
包括类、接口、委托、数组以及内置引用类型object与string。
int i=10,y=0;
obj=i; //装箱操作
y=(int)obj //拆箱操作 拆箱时要求 obj 已经经过装箱操作
public void print(object o)
{
Console.Write(o);
}
使用...这时就发生了装箱和拆箱...
int i=0;
print(i)
.NET 2.0以上应该尽量采用泛型来避免装拆箱,只有在确实无法预知参数类型时才可以用...
一般来说装拆箱是为了通用性,比如Eventhandle委托的第一个参数是引用类型object
但因为某种原因要采用结构体也可以, 这时候系统自动装箱(隐式装箱)
void Form_Click(object sender,EventArgs e)
{
struct c=(struct)sender;//拆箱要显示地进行
}