当前位置:编程学习 > JAVA >>

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中所有类的总结图,就是那种大括号类型的总结,什么地方可以找到?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,