使用C#’ref’关键词与C相比

我主要在C工作,现在我正在使用C#来完成我的新工作,在做了一些关于’ref’关键字和c#值与参考类型的阅读后,我仍然发现一些混淆.

据我了解这些,如果你把这些传递给一个方法,这将是类似的C风格:

价值类型:

public void CSharpFunc(value)

public void CPlusplusFunc(value)

参考类型:

public void CSharpFunc(reference)

public void CPlusPlusFunc(&reference)

‘ref’/指针

public void CSharpFunc(ref bar)

public void CPlusPlus(*bar)

这是一个正确的比喻吗?

解决方法

Is this a correct analogy?

尽管其他答案都说了,不.什么参考C意味着C实际上取决于类型.对于价值类型,您的评估是正确的(或足够接近).对于参考类型,更合适的类比将是参考指针:

public void CPlusPlus(type*& bar)

关于参考的全部内容是,您可以更改传入的引用.您不能通过简单地传递指针来在C中执行此操作:

void f(type* bar) {
    bar = new_address;
}

type* x;
f(x);

这段代码不会改变调用者的x值.如果你已经通过了类型*& amp;;另一方面,它会改变价值.那就是参考文献.

此外,C#中的引用与C中的引用非常不同,更像C中的指针(可以更改引用引用的对象).

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...