返回首页

您好CodeProject上大师,

我需要帮助一些C#基础...看看这个C代码,请告诉我如何做这在C#中的简单和文明的方式:

class A

{

public:

    int* p;

    A(int* pv) : p(pv) {}

    void DoPlusPlus() { (*p)++; }

};

 

int i = 5;

A a(&i);

a.DoPlusPlus();


我有一个这样的班,我只是碰壁一大堆。所有我需要做的是初始化与一些标类的一个实例,这个实例能够稍后修改此标值。

回答

评论会员:游客 时间:2012/02/06
BobJanova:我想这个答案是:你不应该那样做。如果一个C#程序员看到一个int变量,他不指望它改变,除非他作为文献传递到方法。简单的技术解决方案是{C}你可以扩展到一个通用的拳击类是隐式浇注料和其内在的类型,比较容易。我不打算表明*,虽然,因为我觉得这是错误的道路上走下来。但是,这似乎是一件奇怪的事做。如果你的A类修改应用程序的状态,它应该这样做了更加明确和明显的方式。给全球国家(或数据模型或任何i代表了一块)的一个实例,并有直接更新:codeprespanclass="code-keyword"class/spanState{spanclass="code-keyword"public/spanspanclass="code-keyword"int/spani;spanclass="code-keyword"public/spanspanclass="code-keyword"int/spanotherStateVariable;spanclass="code-comment"///spanspanclass="code-comment"...etc/span} spanclass="code-keyword"class/spanA{Statestate;spanclass="code-keyword"public/spanA(Statestate){spanclass="code-keyword"this/span.state=state;}spanclass="code-keyword"public/spanspanclass="code-keyword"void/spanDoPlusPlus{state.i++;}}/pre/code在一个真实场景的状态或数据模型将公开属性,将通知其他层等。当然是迄今为止最好的是,如果一个没有外部的依赖和绝对没有外部依赖(那些真正提出申请,难以维持)写入可以写,但我猜你已经尝试这样做,认为。*:编辑:我张贴imgsrc=],而不是
罗布菲尔波特
评论会员:游客 时间:2012/02/06
嗯。我想这是一个例子,而不是真正的代码,因为你根本不会创建一个类递增整数。C#不具有整数的指针(除了不安全的代码),所以你要到'拳'的问题,如果您尝试运行的概念,那就是当你创建一个引用,它实际上是将复制的价值和参考,而不是你要引用的东西-非常混乱的C类型。一种方法可能是包裹在某种类标,使它引用类型。我需要得到一些午餐。你能解释多一点,你为什么需要这些排序的结构-这种方法真的不适合,网:。|