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); 只想知道这样写是否正确,我没硬件无法测试.

第1个回答  推荐于2016-01-03
对CLR来说out和ref没有区别,有区别的,只是C#编译器为了区分输入输出的引用而已。
也就是说,out和ref在Java中使用java的引用语法就好了。java没有区分out和ref功能,因为对java来说根本就是一回事。本回答被提问者采纳
第2个回答  2011-05-16
out 类型的的参数,是在方法体中直接实例化声明的。 而ref是在主函数体中调用子函数的!但是,用ref必须要在主函数体中声明。否则是不能用的!你自习体会下我说的意思,看是否能明白。
第3个回答  2011-05-17
在.net 中out为输出参数的修饰符,ref为参数的引用修饰符。
第4个回答  2011-05-17
你只能使用JIN,这个比较难,你搜搜把

c# out string 在java中怎么实现
\/\/java中是没有out的,\/\/可以定义一个类 class c1{ public String a;public String b;} \/\/可以用返回值的方式 public c1 ...(){ c1 c=new c1();c1.a="a";c1.b="b";return c1;} \/\/也可以用引用概念 public void ...(c1 c){ c1.a="a";c1.b="b";} ...

java 中有没有 C#中 out类似功能
Java中没有指针,所以也没有引用传递了,仅仅有值传递不过可以通过对象的方式来实现引用传递 类似java没有多继承 但可以用多次implements 接口实现多继承的功能 值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参 数的值。引用传递:也称为传地址。方法...

使用out参数的函数仍然可以将变量作为返回类型。 上面这句话是什么...
你好,这一般是可变参数。在java里面如果是不可变类的实例作为参数传入方法后,其值经过处理后,方法结束后仍然保留。举个例子吧:String str = "abc" ;public boolean method(String str) { str += "d" ;return false ;} String newStr = str; \/\/newString="abc"StringBuffer sb = new Str...

从“跨平台就是一种谎言”说起C#和Java的区别
3.C#中,不用任何范围修饰符时,默认的是protect,因而不能在类外被访问. 4.因为JAVA规定,在一个文件中只能有一个public类,而且这个类的名称必须与文件名一模一样,这是一个区别 5.在C#中,它是以Main方法来定位入口的.如果一个程序中没有一个名为Main的方法,就会出"找不到入口的错误".不要把Main写成main哟 ...

C# ref参数和out参数是什么?
输出参数和引用参数的区别:从CLR的角度来看,关键字out和关键字ref是等效的,这就是说,无论使用哪个关键字都会产生相同的元数据和IL代码。但是,C#编译器将两个关键字区别对待,在C#中,这俩个关键字的区别在于哪个方法负责初始化引用对象。如果方法参数标记为out,那么调用者不希望在调用方法之前初始化...

C#与Java有什么区别啊?
9.方法中传递的参数:两种语言都使用值传递与引用传递。C#的引用传递的关键字是ref与out,ref侧重于修改,out侧重于输出。而Java中都以传值方式;10.访问修饰符:C#中的访问修饰符与Java中的基本对应,但多出了一个internal。简而言之,C#有5种类型的可访问性,如下所示:public:成员可以从任何代码...

将一个c#方法改成java方法,不要工具自动转换的代码,谢谢,
import java.util.*;\/\/ 以下为java versionpublic class Test { public static void main(String[] args) { System.out.println(GetCheckString("cmd")); } \/** * @param cmd 入力参数 * @return *\/ public static String GetCheckString(String cmd) { String...

Java 和 C# 中 substring 方法
而在C#中,第二个参数表示要获取的子字符串的长度。这意味着,即使提供的索引不在有效范围内,substring方法也能正确返回从指定位置开始,长度等于第二个参数的子字符串。总结而言,虽然Java和C#的substring方法在使用一个参数时功能相似,但在使用两个参数时,它们的行为却大相径庭。Java根据索引位置获取...

c#中有一个TimeSpan类型表示的是一个时间段,java中哪个类表示的是时间...
SimpleDateFormat F = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");System.out.println("当前时间:"+F.format(new Date()));Calendar calendar = Calendar.getInstance();calendar.add(Calendar.HOUR, -2);System.out.println("两小时以前时间:"+F.format(calendar.getTime()));

...中的一个参数是用ref定义的。在java类中该如何定义re
是按照值类型传递参数~而ref是引用参数传值的关键字。ref pSngRealConst:Single是按照引用类型传递~据我了解Java好像只有没有这种特殊的传值方式(public static void UseRef(ref int i))~虽然我Java的水平很水但是好像Jna不能调用标准c#类库你还如要注册成com+组件在用c++封装才能用吧。

相似回答