写第一个C#程序的过程记录

来源:互联网 发布:森系淘宝店 编辑:程序博客网 时间:2024/05/17 01:12

发到博克中方便自己查看~~

1.       创建了一个Circle类。
2.       怎样实现一个保存多个Circle实例的CircleGroup 类?
a)       把Circle类当作和 int 一样的类型,在CircleGroup类中类似创建int 数组的Circle数组。Circle数组的创建可以有不带参数与带参数(指定实例个数与初始)。
Public Circle [] circles;
Circles = new Circle [10];
引用 Circles[ i ] ( -1<i<10 )时,运行时提示 Nullreference.
解决
Circle [ i ] 使用前需要被实例化,也就是数组成员完整的实例是:
Circles = new Circle [10];
For (…)
     Circles [ i ] = new Circle();
 
提问:为什么使用语言自带的类型的数组只需要实例化一次呢?而自定义的类型数组像上面要实例化两次。
比如 int[] count = new int [ 10 ], 之后就可以直接引用 count [ i ],它们为什么会有这样的区别呢?
 
b)       创建一个索引器,然后再创建一个CircleGroup的类,在CircleGroup中把对象Circle通过索引器当作数组使用。怎么定义?
 
3. CSDN提问:初级:为什么使用自定义的类创建一维数组时要被实例化两次
=======================
Circle是自定义的类。
 
circles [ i ] 使用前需要被实例化,也就是数组成员完整的实例化是:
circles = new Circle [10];
For (…)
      circles [ i ] = new Circle();
 
上面的第二次实例不能省略,在VS2005上面由于缺少了第二步的实例化,编译通过但是调试的时候提示引用空类型。
 
但是语言自带的类型比如 int ,如果有这样的实例化:
circles = new int[ 10 ];
之后就可以直接引用数组成员了。
 
为什么会有这样的区别呢?
=======================
 
4.       在实现Ilist接口时,其内有方法 public Add( object Value ), 但是实际上使用的是 Add( Circle Value ), 也就是接口的参数类型可不可以特殊化?在方法中怎样实现方法内部的Circle 类型参数与传递过来的 object参数比较?
 
解决
比较之前将类型强制转换,如果传递的Object参数是Circle类型,转化后会正确的添加。而且比较可以通过比较特定的成员的方法来判断,如果是直接通过操作符比较两个对象,可能只有在两个对象都是同一个的引用的时候才会是相等的。
  
 
原创粉丝点击