首页 新闻 会员 周边 捐助

有关DataRow(感觉应该是个很简单的问题,但是目前我好像有点卡壳。)

0
悬赏园豆:10 [已解决问题] 解决于 2012-08-21 20:43
 class Program
    {
        
        static void Main(string[] args)
        {

            DataTable dt = new DataTable();
            dt.Columns.Add("num");
            dt.Columns.Add("name");

            DataRow dr = dt.NewRow();
            dr["num"] = "1";
            dr["name"] = "张三";
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr["num"] = "2";
            dr["name"] = "李四";
            dt.Rows.Add(dr);

            DataRow ss = dt.Rows[1];
//显示2:::::::::::李四
Console.WriteLine(ss["num"].ToString() + ":::::::::::" + ss["name"].ToString()); //显示2:::::::::::李四
Console.WriteLine(dt.Rows[
1]["num"].ToString() + ":::::::::::" + dt.Rows[1]["name"].ToString());
ss[
"num"] = "4"; ss["name"] = "lao liu";
//显示4:::::::::::lao liu Console.WriteLine(ss[
"num"].ToString() + ":::::::::::" + ss["name"].ToString()); //显示4:::::::::::lao liu 为什么dt.Rows[1]的值也变了,能说一下原理吗?
Console.WriteLine(dt.Rows[
1]["num"].ToString() + ":::::::::::" + dt.Rows[1]["name"].ToString()); Console.ReadKey(); } }
c#
妖叨叨的主页 妖叨叨 | 初学一级 | 园豆:193
提问于:2012-08-21 15:50
< >
分享
最佳答案
0

引用类型的变量存放的都是内存中的同一个位置,你修改了,用别的变量访问,显示时变过的值。

收获园豆:4
chenping2008 | 大侠五级 |园豆:9836 | 2012-08-21 16:13
 string a = "SSS";
 string b = a;
 b = "AAA";
console.write(a);//显示SSS
console.write(b );//显示AAA

string 类型变量也是引用类型吧,这段代码跟提问的代码,得出的不同结果,我感觉不太理解。

妖叨叨 | 园豆:193 (初学一级) | 2012-08-21 16:31

@阿难: string 类型变量也是引用类型吧 yes

但string 赋值操作是特殊处理过的。不传递引用

何潮 | 园豆:228 (菜鸟二级) | 2012-08-21 17:52

@何潮: string 是个特殊的引用类型。string是不可变的,对它的任何操作,都会返回一个新的字符串

chenping2008 | 园豆:9836 (大侠五级) | 2012-08-21 19:35
其他回答(2)
0

ss引用的就是dt.Rows[1]啊,当然会变了。

收获园豆:4
向往-SONG | 园豆:4853 (老鸟四级) | 2012-08-21 15:54

感觉答案应该就是:ss引用的就是dt.Rows[1]。但是我可能有点装牛角尖了,还是想不怎么通。能帮我补充下引用的基础数据吗,如果能和string的引用做比较那就更好了。谢谢。

支持(0) 反对(0) 妖叨叨 | 园豆:193 (初学一级) | 2012-08-21 16:11

感觉答案应该就是:ss引用的就是dt.Rows[1]。但是我可能有点装牛角尖了,还是想不怎么通。能帮我补充下引用的基础知识吗,如果能和string的引用做比较那就更好了。谢谢。

支持(0) 反对(0) 妖叨叨 | 园豆:193 (初学一级) | 2012-08-21 16:13

@阿难: 

拿string做比较只会更晕。。。感觉对了就行了哈。

支持(0) 反对(0) 向往-SONG | 园豆:4853 (老鸟四级) | 2012-08-21 16:24
0

 DataRow ss = dt.Rows[1];

这段代码的作用是,SS指向dt.Rows[1],它并不会把dt.Rows[1]复制一份,明白了吧?

收获园豆:2
happydaily | 园豆:260 (菜鸟二级) | 2012-08-21 18:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册