日期:2014-05-18  浏览次数:20999 次

很简短的一个小程序,请高手解释一下关键点.先谢了!
请问其中的调用WriteContents(&g)和函数WriteContents(Gas* gas)参数怎么匹配的啊,还有这句gas->p什么意思?不明白,帮忙解释一下.谢谢.
using System;

public struct Gas
{
internal double p;
internal double t;

public Gas(double p, double t)
{
this.p = p;
this.t = t;
}
}

public unsafe class PointerDemo
{
public static void Main()
{
Gas g = new Gas(100.0, 300.0);
WriteContents(&g);
}

public static void WriteContents(Gas* gas)
{
Console.WriteLine("p is {0}",gas->p);
Console.WriteLine("t is {0}",gas->t);
}
}
请问其中的

------解决方案--------------------
指针
------解决方案--------------------
指针???C#里面没有,C#里面的引用就相当于C++里面的指针
Gas是一个类,本身就是引用传值,所以可以这样
public static void Main() 

Gas g = new Gas(100.0, 300.0); 
WriteContents(g); 


public static void WriteContents(Gas gas) 

Console.WriteLine("p is {0}",gas.p); 
Console.WriteLine("t is {0}",gas.t); 
}
------解决方案--------------------
指针...

而且回复楼上的,C#里并不是没有指针,只是不怎么推荐用而已...
------解决方案--------------------
C#是有指针的,对不起,我错了。。
在C#中如果想使用指针就需要将代码定义为unsafe,并且需要修改工程配置,将"不允许不安全代码"设为True