Jiang's C++ Space

创作,也是一种学习的过程。

   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
我要实现一个功能,用C++表达如下:
int g_iTest = 0// 全局变量

class A
{
A(
int* pVal){m_pVal = pVal;}   //将指针记录下来
void Increase(){(*m_pVal)++;}
}

//
A a(&g_iTest);
a.Increase(); 
//会改变g_iTest的值
换句话说,我想保存一个int的引用,对这个成员int的操作就是对那个全局int的操作,这样的功能,如何用C#来实现?

由于int是值传递,所以没办法保存这个“引用”。

我开始尝试使用unsafe的指针,但当我对System.Drawing.Color取址的时候,居然出现CS0208编译错误。纳闷。

然后尝试使用装箱/拆箱的方法来传递一个object来实现,但A(object val)这样的构造函数确实太不美观,光看这个构造函数,谁知道A想要的是个整型?

最后……唉,自己弄了个MyInt。

写MyInt的时候,我第一想到的就是类似C++的自动类型转换,使得我可以自由无碍地把整型“赋值”给MyInt,反之亦然,但我发觉C#的类型转换运算符重载函数居然必须是static的,完全没用。

最最后……先将就着吧。
posted on 2011-08-18 23:07 Jiang Guogang 阅读(940) 评论(4)  编辑 收藏 引用 所属分类: Knowledge

评论

# re: C#实现类似C++功能的困惑 2011-09-07 19:20 gejun
呵呵,最终还是像C#妥协了啊  回复  更多评论
  

# re: C#实现类似C++功能的困惑 2011-09-13 22:45 Jiang Guogang
@gejun
有你这样的访客经常来看看,真是给我的鼓励。  回复  更多评论
  

# re: C#实现类似C++功能的困惑 2012-04-23 10:47 无人
看不懂啊。如果你要全局变量,可以用MODULE啊  回复  更多评论
  

# re: C#实现类似C++功能的困惑[未登录] 2013-09-01 10:20 Sam
使用可空类型  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理