Tao & Zen

Soli Deo Gloria!

导航

c++与c#的对象区别

几个月没动C#,以前的一个项目,带的一个毕业设计来问问题,结果自己写的当时
也没在意,现在看来还是要小心这个不同
举个小例子

对象A ,有属性 sa;
容器 c++的 是vector<A>  ;c#的是 Arraylist :VA

做的事情是这样 循环添加对象

c++:

A a;
for (int i =0 ;i<10;++i)
{
    a.sa =i;
    VA.push_back(a);
}

copy(VA.begin(),VA.end(),ostream_iterator<A>(out,"\n"));

这个VA里面存的对象是很明显对象的sa属性是1~9;
但。。。
c#:
如果也在这声明A a 就麻烦了
for(int i =0;i<10;++i)
{
    A a=new A();
    // A a;这样声明也一样
    a.sa =i;
    VA.add(a);
}
如果犯了上面两个错误那么加到VA里面的就是对象的sa属性都是9。
原因是c#和java都是使用引用的,托管的代码必须要自己new才是新的对象。。。汗,
当初我是知道的啦。。这半年的c++弄的自己都糊涂了。

PS:另外还发现c#写的解析文本的速度似乎比c++不差,虽然都是debug,简单的读入文本,但
感觉还是c#快。。。60w行文本 tab分割的7列,取2,3 ,7列做一个对象加入容器,vector对
Arraylist,都加好了,居然c#先完成,没优化?我不知道。。。 我还没用List<T>呢。。。。
个例吧。。。。

posted on 2007-05-11 22:23  康国庆--thinkinlove  阅读(906)  评论(5编辑  收藏  举报