仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 734|回复: 12
打印 上一主题 下一主题

[学习教程] ASP.NET网页设计C++ CLI 程序编写注重事项仓酷云

[复制链接]
山那边是海 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:28:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
兄弟们,想来你们都看过了昨天的比赛了。我现在的痛苦状跟当时应该差不多。希望本版.net老师不吝赐教,为小弟这一批迷途的羊羔指一条阳光之道!您也知道:学习技术如果只有一个人摸索,那是一件多么痛苦的事情!还有,如果万辛能得名师或长者指点,那又是多么一件幸福和快乐的事情!比来做了一个C++CLI的项目,感到仍是有良多注重事项的。如今写上去与人人分享,但愿能对人人有所匡助。本文不会会商更多实际上的工具,只会从有用角度动身,把相干语法内容过一遍。
1)属性
C++CLI声明属性,必要利用property关头字。在属性内,必要经由过程get函数、set函数来设定公有的field值。
万万别忘了,在属性声明停止后要加分号。
利用C#声明属性:


<br>
<br>Code
privateint_age;

publicAge
{
get{return_age;}
set
{
if(0>value||value>=150)
thrownewException();
_age=value;
}
}
利用C++CLI声明属性:

Code
private:
int_age;

public:
propertyintAge
{
intget(void){return_age;};
voidset(intvalue)
{
if(0>value||value>=150)
throwgcnewException();
_age=value;
};
};
2)办法
当利用override关头字重载虚办法,大概利用new关头字掩盖基类办法时,关头字要写在办法称号和参数列表前面。
利用C#声明:

Code

<br>publicclassA

<br>{

<br>
<br>publicintAdd(inta,intb)
<br>{returna+b;}

<br>}

<br>

<br>publicclassB:publicA

<br>{
publicnewintAdd(inta,intb)
<br>{returna+b;}

<br>}

<br>

<br>protectedoverridevoidOnPaint(PaintEventArgspevent)利用C++CLI声明:

Code

<br>publicrefclassA

<br>{
publicintAdd(inta,intb)
<br>{returna+b;}

<br>}

<br>

<br>publicrefclassB:publicA

<br>{

<br>public:
intAdd(inta,intb)new
<br>{returna+b;)

<br>}

<br>

<br>protectedvoidOnPaint(PaintEventArgspevent)override3)事务:
这是C++CLI中对照烦人的部分,代码声明相似于属性声明。事务中的两个默许函数是add和remove。
利用C++CLI声明事务:

Code

<br>private:

<br>EventHandler^_AxDownloadComplete;

<br>public:

<br>virtualeventEventHandler^AxDownloadComplete

<br>{

<br>virtualvoidadd(EventHandler^value)

<br>{

<br>_AxDownloadComplete+=value;

<br>};

<br>virtualvoidremove(EventHandler^value)

<br>{

<br>_AxDownloadComplete-=value;

<br>};

<br>};
4)参数
在C#必要传送援用,利用ref关头字。在C++CLI中与之对应的是%,在C++CLI中没有out关头字。
利用C#声明:

Code

<br>publicvoidGetObject(refObjecto);

<br>利用C++CLI声明:

Code

<br>public:

<br>GetObject(Object^%o);
5)创立对象
在C++CLI中能够经由过程new关头字创立非托管对象。利用gcnew创立托管对象。编译器在编译时会主动反省对象的范例。

6)完成接口
在C#中,一个类无需显式的承继接口。好比:

Code

<br>publicinterfaceITest

<br>{
BackColor
<br>{get;set;}

<br>}

<br>

<br>publicclassMyControl:Control,ITest

<br>{

<br>//无需显式的声明BackColor属性,觉得基类Control,已含有BackColor的完成了。

<br>}
假如在C++CLI中依照下面的相似写法,将会失掉一个C3766编译毛病。编译器提醒代码中未能完成ITest接口。以下的两种写法
都将会招致C3766毛病:

Code
publicinterfaceclassITest
{
intAdd(inta,intb);
};

publicrefclassImpl:ITest
{

};//errorC3766


publicinterfaceclassITest
{
intAdd(inta,intb);
};

publicrefclassImpl:ITest
{
public:
intAdd(inta,intb){returna+b;}
};//errorC3766
人人大概会对第二种写法也会到致编译器呈报C3766毛病而感应惊奇。其次要缘故原由是,C++完成多态次要是经由过程
虚表来完成的。将必要完成多态的函数指针在运转时放进虚表中,在挪用时,体系查询虚表,找到对应的指向虚函数的指针,
最初挪用实行。

准确的写法应当是:

Code

<br>publicinterfaceclassITest

<br>{

<br>intAdd(inta,intb);

<br>};

<br>

<br>publicrefclassImpl:ITest

<br>{

<br>public:
virtualintAdd(inta,intb)
<br>{returna+b;}

<br>};
将完成办法用virtual关头字润色,以便编译器可以准确辨认该办法为虚办法,将其指向函数的指针放进虚表内。
这就带来一个成绩,假如你声了然一个依据System::Windows::Forms::Control类成员的一个接口IControl,然后声明一个类MyControl,该类承继了System::Windows::Forms::Control类和IControl接口。那末,C++编译器将不会以为MyControl类已完成了IControl接口,而招致大批的编译毛病。缘故原由就是System::Windows::Forms::Control类的年夜部分办法都不是虚办法,C++编译器没法间接把基类的办法放进虚表中完成多态。因而只能本人再将Control类在封装一遍。
来自:http://www.ckuyun.com/michaellee/archive/2008/08/03/1259080.html
捆绑编译器。用户不需要受制于厂家,自己就能将程序在新平台上编译运行。除了牛B轰轰的linux,估计也没有系统捆绑c/c++的编译器,而且许多新平台都无法支持复杂的c/c++编译器在上面直接运行。
小魔女 该用户已被删除
沙发
发表于 2015-1-20 05:28:05 来自手机 | 只看该作者
是目前ASP在UNIX/Linux上的应用可以说几乎为0)。所以平台的局限性和ASP自身的安全性限制了ASP的广泛应用。
小女巫 该用户已被删除
板凳
发表于 2015-1-26 22:57:41 | 只看该作者
是目前ASP在UNIX/Linux上的应用可以说几乎为0)。所以平台的局限性和ASP自身的安全性限制了ASP的广泛应用。
山那边是海 该用户已被删除
地板
 楼主| 发表于 2015-2-2 15:07:47 | 只看该作者
ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码。
简单生活 该用户已被删除
5#
发表于 2015-2-7 23:11:08 | 只看该作者
asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源
admin 该用户已被删除
6#
发表于 2015-2-9 07:18:01 | 只看该作者
大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。
谁可相欹 该用户已被删除
7#
发表于 2015-2-10 22:25:49 | 只看该作者
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp)。
变相怪杰 该用户已被删除
8#
发表于 2015-2-14 04:53:48 | 只看该作者
业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
灵魂腐蚀 该用户已被删除
9#
发表于 2015-2-20 17:19:20 | 只看该作者
提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。
蒙在股里 该用户已被删除
10#
发表于 2015-2-28 02:11:23 | 只看该作者
ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。
乐观 该用户已被删除
11#
发表于 2015-3-9 18:19:37 | 只看该作者
对于中小项目来说.net技术是完全可以胜任,但为什么现在大型公司或网站都选择php或java呢?就是因为微软不够开放,没有提供从硬件到应用服务器再到业务应用的整套解决方案。
再见西城 该用户已被删除
12#
发表于 2015-3-17 00:10:21 | 只看该作者
当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。
第二个灵魂 该用户已被删除
13#
发表于 2015-3-23 08:37:55 | 只看该作者
主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-27 17:02

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表