| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1258 人关注过本帖
标题:值类型和引用类型
只看楼主 加入收藏
棉花糖ONE
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:2987
专家分:0
注 册:2006-7-13
收藏
 问题点数:0 回复次数:16 
值类型和引用类型

各位可以用个例子来区别一下值类型和引用类型吗

搜索更多相关主题的帖子: 类型 例子 
2006-07-18 23:44
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
收藏
得分:0 
[CODE] Class1 c=new Class1();
c.Value=20;
Class1 tempc=c;
MessageBox.Show(tempc.Value.ToString()); //顯示20
tempc.Value=50;
MessageBox.Show(c.Value.ToString()); //顯示50
[/CODE]
[CODE]
int i=20;
int j=i;
MessageBox.Show(j.tostring()); //顯示20
j=50
MessageBox.Show(i.tostring()); //還是顯示20
[/CODE]

值類型是直接存值,存在堆棧中;引用類型是存對值的引用,存在拖管堆中

[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2006-07-19 08:58
noshow
Rank: 2
等 级:新手上路
威 望:4
帖 子:1127
专家分:0
注 册:2006-4-21
收藏
得分:0 
讲的真好 鼓掌
不过这种东西不实用的
实际使用的时候大多数情况不用的

此号自封于2006年11月30日
2006-07-19 09:04
marer
Rank: 2
等 级:新手上路
威 望:3
帖 子:928
专家分:0
注 册:2005-7-18
收藏
得分:0 
我给个例子是实际中要用的:

例:查询数据库:

public bool SearchUser(string UserName,out DataTable dt,out string strMsg)
{
SqlConnection con=new SqlConnection(..);
SqlCommand cmd= new SqlCommand();
cmd.Connection=con;
cmd.CommandText="select * from Users where UserName='"+UserName+"'";
dt=new DataTable;
SqlDataAdapter da=new SqlDataAdapter();
da.SelectCommand=cmd;
try
{
da.Fill(dt);
}
catch(SqlException er)
{
StringBuilder sb=new StringBuilder(er.Message);
strMsg=sb.ToString();
return false;
}
strMsg="操作成功!";
return true;
}

这个方法的第一个参数为值类型,而后两个参数为引用类型。

public class 人生历程 extends Thread{public void run(){while(true){努力,努力,再努力!!;Thread.sleep(0);}}}
2006-07-19 09:11
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
收藏
得分:0 
值類型在執行效率上比引用類型高
所以現在少用傳出參數
而且需求不是很高時 最好用結構,比用類能更加追求效率

[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2006-07-19 09:24
noshow
Rank: 2
等 级:新手上路
威 望:4
帖 子:1127
专家分:0
注 册:2006-4-21
收藏
得分:0 
收藏
这种东西刚开始用不到的
但是以后如果做大东西或者要求高效率东西的时候就有用了
希望各位仁兄表因为俺在这里抢劫一样的学习就不发言了

此号自封于2006年11月30日
2006-07-19 09:51
月夜枫华
Rank: 4
等 级:贵宾
威 望:12
帖 子:437
专家分:42
注 册:2006-1-2
收藏
得分:0 

区分值类型和引用类型是学习C#乃至OOP设计一项基本也是比较重要的技能.
在大型服务器程序和多线程程序开发时,如果没有区分好值类型和引用类型可能会出现数据异常或资源无法释放等错误.


2006-07-19 11:19
noshow
Rank: 2
等 级:新手上路
威 望:4
帖 子:1127
专家分:0
注 册:2006-4-21
收藏
得分:0 
如果我把值类型理解为赋值 即存储的是真正的值
把引用类型理解为指针 即存储的是值的地址
这样理解有没有错误
如果有错误 错在哪里
请指教~

此号自封于2006年11月30日
2006-07-19 11:28
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
收藏
得分:0 
以下是引用noshow在2006-7-19 11:28:50的发言:
如果我把值类型理解为赋值 即存储的是真正的值
把引用类型理解为指针 即存储的是值的地址
这样理解有没有错误
如果有错误 错在哪里
请指教~

值類型確實是這樣

引用理解為指針的話,概念上有點類試, 語法操作不同,一個是 .來訪問,一個是->來訪問
我的看法是;
變量必須引用一個存在的對象實例,而指針可以任意指定地址.所以安全性差


[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2006-07-19 11:52
noshow
Rank: 2
等 级:新手上路
威 望:4
帖 子:1127
专家分:0
注 册:2006-4-21
收藏
得分:0 
这个可能跟.NET运行的结构有关吧
因为以前的语言是单纯的在内存进行操作的
是一元结构
并没有二次指向的问题
但是到了.NET里之后由于托管堆的存在
也就是一个类先一次分配空间
然后当实例化的时候二次分配 这个时候实际上是指针指向一次分配的类的空间加以联系
这样就形成了二元结构
因此如果指针指错位置或者运算的时候益处
那么带来的后果可能就是系统的崩溃

我这样理解应该没错吧~

此号自封于2006年11月30日
2006-07-19 12:23
快速回复:值类型和引用类型
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025866 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved