zoukankan      html  css  js  c++  java
  • 失业日志:2009年10月16日 能回忆多少就写多少

    其实昨天应该写一下去书店看《.net3.5高级编程》,感觉看到Enum,struct类的封装的时候有些困难了,3个小时,看的进度慢,那本书的一些记住的要点,记住的如下。
    1.参数类型,ref out param 一般参数。
    用的较多的是一般的参数,后来接触了out方式的参数,在数据库分页的时候需要用到,比如查询某一页数据,又要得到所有记录的总数,需要返回两种类型的值,这个时候就可以使用out方式,比如 IList<Models> GetRows(int page,out int rowsCount){...}需要注意的时候,在GetRows函数返回前中需要给rowsCount付值,否则就会出错。
    IList<Models> GetRows(int page,out int rowsCount){
    if(page<1){ return new List<Models>() ; }//编译会出错,在之前需要增加rowCount=0;
    }
    ref类型的参数用的不多,但是也很好理解,谈到这个,想起一道c的面试题,就是写一个swap函数,交换两个数字。很多人写成
    void swap(int a,int b){
    int temp=a;
    a=b;
    b=temp;
    }这样是一种错误的写法,应该只用指针类型 void swap(int *a,int *b){...}这样的方式。指向地址,这样才能做到交换。
    在C#中,对于值类型和string,如果要实现改变输入参数的值,那么就需要用到ref 类型的参数。
    void RefExm(ref int a){ a=10; }
    如果在调用其该函数,在a的初始值为5,那么执行完这个参数后就为10.
    void main(){
         int a=5;
         RefExm(ref a);
         Console.WriteLine(a);
    }
    这个时候a已经变为了10.
    致于param我的感觉就是可以在参数赋值的时候方便了一些。
    void ParamExm (param int[] a){

    }
    那么在执行的时候可以用ParamExm(1,2,3)这样的方式进行参数赋值。而不仅仅是int[] a={1,2,3}这样的ParamExm(a);
    关于ref out param就记住这么多了。

    2.数组中实现foreach需要使用IEnumerable接口和GetEnumerable()方法。数组中要实现Sort()方法需要实现ICompare接口。其他的关于枚举和数组的方法和用法,没怎么记住,只是以后定义用户类型,最好能用上枚举。

    3.static 关于static关键字,在使用的要领上,比如一些公共的对象,比如货币类型,员工部门等这些经常用的,可以在类中定义成static方式,在定义静态构造函数中查询数据库,并赋值给static变量,这样就不会造成频繁访问数据库。(想想以前写的一些类,应该需要改改了。呵呵)另外还有static readonly和const的其实效果是一样的,不同的是,const只能一开始赋初值,在编译时赋值,而static readonly可以再构造函数中赋值,在运行时赋值。

    4.class a和public class a的区别,对于没有嵌套的类来讲 class a的访问权限是interal,就是在程序集中可以访问。不能跨程序集,如果要跨程序集,那么还是只能用public。

    5.this的构造函数用法,当定义多个构造重载(overload)函数,为了避免代码冗余,可以用this函数进行简化,及定义一个共有的主构造函数,再重载其他构造函数。
    class a{
         public a(){}
         public a(int param1,string param2){
                ....
         }
         public a(int param1):this.a(param1,""){
                ....
          }
    }
    这样,当执行构造函数a(1)是,实际先执行了a(1,""),然后在执行a(1),这样就避免了再a(int param1)中重复定义a(int param1,string param2)的代码。

    6.类封装的第一个原则,将其成员变量都定义成私有,采用属性的方式访问。
    例如:
    class a{
    private int param;
    public A{
    get{return param;}
    set{param=value;}
    }
    }
    当然.net3.0可以定义这样public A{get;set;}
    其他封装的原则,今天面试问了一个低耦合,高聚合。没反应过来,最后在引用一下人家的话作为今天的结束吧。

    内聚(本题的聚合):内聚是指一个模块内部各个部分之间的关联程度
    耦合:耦合指各个模块之前的关联程度      
    封装原则:隐藏对象的属性和实现细节,仅对外公开借口,并且控制访问级别
    在面向对象方法中,用类来实现上面的要求。用类实现封装,用封装来实现高内聚,低耦合。

    模块内部,各部分高度关联,模块之间,相互独立。如何实现,需要好好想想。接着学习吧。
  • 相关阅读:
    mysql 内联接、左联接、右联接、完全联接、交叉联接 区别
    JS 时间字符串与时间戳之间的转换
    MySQL性能优化的最佳20条经验
    ++i 与 i++ 的区别
    === 与 == 区别
    SC命令创建和删除windows服务
    杂记
    linux 文件编程
    u-boot 启动过程
    简单冒泡法
  • 原文地址:https://www.cnblogs.com/poplau/p/1584744.html
Copyright © 2011-2022 走看看