网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > C# > 正文
C++ CLI 程序编写注意事项
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/14
下载{$ArticleTitle}原创论文样式

     最近做了一个C++ CLI的项目,感觉还是有很多注意事项的。现在写下来与大家分享,希望能对大家有所帮助。本文不会讨论更多理论上的东西,只会从实用角度出发,把相关语法内容过一遍。

1) 属性

     C++ CLI声明属性,需要使用property关键字。在属性内,需要通过get函数、set函数来设定私有的field值。

千万别忘了,在属性声明结束后要加分号。

使用C#声明属性:

 

Code
private int _age;

public Age
{
   get{return _age;}
   set
   {
     if(0>value || value>= 150)
        throw new Exception();
      _age = value;
   }
}

 

使用C++ CLI声明属性:

 

Code
private:
int _age;

public:
property int Age
{
   int get(void){return _age;};
   void set(int value)
   {
     if(0> value || value >= 150)
       throw gcnew Exception();
      _age = value;
   };
};

 

2) 方法

    当使用override关键字重载虚方法,或者使用new关键字覆盖基类方法时,关键字要写在方法名称和参数列表后面。

使用C#声明:

 

Code
public class A
{
  public int Add(int a,int b){return a + b;}
}

public class B : public A
{
  public new int Add(int a,int b){return a + b;}


protected override void OnPaint(PaintEventArgs pevent)

使用C++ CLI 声明:

 

Code
public ref class A
{
  public int Add(int a,int b){return a + b;}
}

public ref class B : public A
{
  public:
  int Add(int a,int b) new {return a + b;)


protected void OnPaint(PaintEventArgs pevent) override

3) 事件:

    这是C++CLI中比较烦人的部分,代码声明类似于属性声明。事件中的两个默认函数是add和remove。

使用C++ CLI声明事件:

 

Code
private:
 EventHandler^ _AxDownloadComplete;
public:
virtual event EventHandler^ AxDownloadComplete
{
   virtual void add(EventHandler^ value)
   {
      _AxDownloadComplete += value;
   };
   virtual void remove(EventHandler^ value)
   {
      _AxDownloadComplete -= value;
   };
};

 

4) 参数

    在C#需要传递引用,使用ref关键字。在C++ CLI中与之对应的是%,在C++ CLI中没有out关键字。

使用C#声明:

 

Code
public void GetObject(ref Object o);

使用C++ CLI声明:

 

Code
public:
GetObject(Object

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号