很简短的一个小程序,请高手解释一下关键点.先谢了!
请问其中的调用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