WEB开发网
开发学院软件开发C语言 由C++转向C#需要注意的问题 阅读

由C++转向C#需要注意的问题

 2009-04-11 08:25:15 来源:WEB开发网   
核心提示: 事实上,我们可以不使用new关健字而在栈上生成一个结构类型的变量,由C++转向C#需要注意的问题(5),但这时需要注意的是,New关健字能够初始化对象,这种设计很巧妙,既可以实现数据的隐藏和封装,如果不使用new,则在使用前必须手工地对结构中的所有成员进行初始化

事实上,我们可以不使用new关健字而在栈上生成一个结构类型的变量,但这时需要注意的是,New关健字能够初始化对象。如果不使用new,则在使用前必须手工地对结构中的所有成员进行初始化,否则在编译时会出错。 

对象的初始化 

usingSystem;//有二个成员变量和一个构造器的简单结构
publicstructPoint
{
publicPoint(intx,inty)
{
this.x=x;
this.y=y;
}
publicintx;
publicinty;
}
publicclassTester
{
publicstaticvoidMain()
{
Testert=newTester();
t.Run();
}
publicvoidRun()
{
Pointp1=newPoint(5,12);
SomeMethod(p1);//fine
Pointp2;//不调用new而直接创建
//编译器编译到这里时会出错,因为p2的成员变量没有被初始化
//SomeMethod(p2);
//手工对它们进行初始化
p2.x=1;
p2.y=2;
SomeMethod(p2);
}
//一个可以接受Point作为参数的方法
privatevoidSomeMethod(Pointp)
{
Console.WriteLine("Pointat{0}x{1}",
p.x,p.y);
}
}

属性

大多数的C++编程人员都希望使成员变量的属性为private,这种隐藏数据的想法促进了数据封装概念的出现,使我们能够在不改变用户依赖的接口的情况下而改变类的实现。通常情况下,我们只希望客户获取或设置这些成员变量的值。因此,C++编程人员开发出了用来存取private成员变量的存取器。 

在C#中,属性是类的第一级成员。对于客户而言,属性看起来象一个成员变量。对于类的实现者而言,它看起来更象是方法。这种设计很巧妙,既可以实现数据的隐藏和封装,又可以使客户很方便地访问成员变量。 

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:转向 需要 注意

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接