• 不常见程序写法和容易误解的概念



    一,不常见写法:
            1, if(...){}
                    else switch(...){}   --觉得还比较简洁

    二,误解的概念
            1, SomeType a = new SomeType();
                    if(SomeType==nulll){}  这句话永远是对的
            2, SomeType a = new SomeType();
                    SomeType b;
                    b=a;
                    a=null;
                    b=???   b是什么呢?估计很多人以为是Null吧? 都是引用,会改变原来的值
                                其实,b还是存在的,因为a只不过断了地址!

                   有人比喻,传值和传址就好比邮递员送信,一个是送到手中,一个是收到领取的包裹单。
                    所以,上面的例子就好比,有两个包裹单同时送给了a和b,a把包裹单掉了,这明显是
                    不影响b的
            3,  String a="XXXX";
                 a.Replace("XXXX","");
                  Print(a);   // 哦?a还是老样子!String对象是不可变的,一旦创建就不会发生更改。String上看
                 似更改的操作,其实是返回一个新的String对象。
     
                 当然,你可能会反驳我
                  a=a.Replace("XXXX","");
                  Print(a);  // 终于更改了吧!嘿嘿,上面的不可改变理论破灭了!
                                 是吗?
                  注意:String是引用类型,这样是改变了引用,原来的a已经在等待垃圾回收了!
                  小心:值类型也生了这样的脾气,比如:DataTime.Now.AddMonth(1) -->不改变 
           4, 注意引用

    Class SomeClass1
    {
        pubic 
    int I;
    }


    SomeClass1 class1
    =new SomeClass1();
    SomeClass1[] classArr1
    =new SomeClass1[10];
    for(int i=0;i<10;i++)
    {
         classArr1[i]
    =class1;
         class1.I
    =i;
    }
      
    // 结果SomeClass1的集合里面I全部为10
    // 原因是都是引用了class1,只修改了一份

    // 正确的是
    for(int i=0;i<10;i++)
    {
         SomeClass1 class1
    =new SomeClass1();
         classArr1[i]
    =class1;
         class1.I
    =i;
    }
      







                                                 ===== 以后慢慢加 =====

  • 相关阅读:
    MVC应用程序使用Entity Framework
    @Styles的nameSpace是什么
    创建第一个MVC应用程序
    计算DataTable某列的值(SUM)
    DropDownList 控件的SelectedIndexChanged事件触发不了
    在类中使用Response.Redirect()方法
    控制某个panel的display样式
    获取指定日期下个月份的第一天
    字符串如何还原为中文
    判断字符串中包含3个连续(升、降)或相同的数字
  • 原文地址:https://www.cnblogs.com/xianyun/p/437673.html
Copyright © 2020-2023  润新知