C#中的方法中的参数是out型, 用java该如何表示?
[DllImport("Winscard.dll")] //1.引用dll
public static extern Int32 SCardEstablishContext(UInt32 scope, int reserved1, int reserved2, out int pcscContext); //2.这里是C#中调用dll里方法的声明
[DllImport("winscard.dll")]
private static extern Int32 SCardListReaders(int hContext, byte[] mszGroups, byte[] mszReaders, ref int pcchReaders); //3.这里是C#中调用dll里方法的声明
UInt32 和 out 和ref 是什么意思?
如何用java写2和3这两个方法的声明 ?
补充:static {
System.loadLibrary("Winscard");
}
//内部类 代替c#中struct数据结构
class SCARD_IO_REQUEST{
public int dwProtocol;
public int cbPciLength;
public SCARD_IO_REQUEST(){};
public SCARD_IO_REQUEST(int dwProtocol, int cbPciLength) {
this.dwProtocol = dwProtocol;
this.cbPciLength = cbPciLength;
}
}
/* PC/SC 在操作系统上分配资源
<param name="scope">资源管理上下文范围,将是下列值之一
SCARD_SCOPE_USER = 0;
SCARD_SCOPE_SYSTEM =2;
</param>
<param name="reserved1">保留供将来使用必须为 0</param>
<param name="reserved2">保留供将来使用必须为 0</param>
<param name="pcscContext">返回的资源管理上下文句柄</param>
<returns>
如果返回成功 将返回 SCARD_S_SUCCESS = 0;
如果返回错误 请查看 http://msdn.microsoft.com/en-us/library/aa374738(VS.85).aspx
</returns> */
public static native int SCardEstablishContext(int scope, int reserved1, int reserved2, int pcscContext); 只想知道这样写是否正确,我没硬件无法测试.
答案:对CLR来说out和ref没有区别,有区别的,只是C#编译器为了区分输入输出的引用而已。
也就是说,out和ref在Java中使用java的引用语法就好了。java没有区分out和ref功能,因为对java来说根本就是一回事。
其他:out 类型的的参数,是在方法体中直接实例化声明的。 而ref是在主函数体中调用子函数的!但是,用ref必须要在主函数体中声明。否则是不能用的!你自习体会下我说的意思,看是否能明白。 在.net 中out为输出参数的修饰符,ref为参数的引用修饰符。 你只能使用JIN,这个比较难,你搜搜把
上一个:如何写java程序实现sqlserver数据导入到mysql数据库
下一个:java中所有类的总结图,就是那种大括号类型的总结,什么地方可以找到?