我可以使用签名来调用COM方法
HRESULT Foo(BSTR in, [out] BSTR * out1, [out] BSTR * out2)
Run Code Online (Sandbox Code Playgroud)
来自VBScript?
下列:
Dim a;
Dim b;
component.Foo "something", a, b
Run Code Online (Sandbox Code Playgroud)
给出了关于不兼容类型的错误.
我仍然可以改变方法的签名.
我理解用于表示通用参数的刻度,如:
Seq.append : seq<'T> -> seq<'T> -> seq<'T>
Run Code Online (Sandbox Code Playgroud)
但是插入符号表示什么,如:
Seq.average : seq<^T> -> ^T
Run Code Online (Sandbox Code Playgroud) 作为我正在编写的编程语言的编译器的一部分,我在字节码中遇到了通用签名,我试图解析并转换为AST.解析算法大多数都有效,但似乎有一种特殊情况,这些签名的格式有点奇怪.以下是一些这样的情况:
java.util.Arrays#parallelSort: <T::Ljava/lang/Comparable<-TT;>;>([TT;)V
java.util.Arrays#parallelSort: <T::Ljava/lang/Comparable<-TT;>;>([TT;II)V
java.lang.Class#getAnnotation: <A::Ljava/lang/annotation/Annotation;>(Ljava/lang/Class<TA;>;)TA;
java.lang.Class#getAnnotationsByType: <A::Ljava/lang/annotation/Annotation;>(Ljava/lang/Class<TA;>;)[TA;
java.lang.Class#getDeclaredAnnotation: <A::Ljava/lang/annotation/Annotation;>(Ljava/lang/Class<TA;>;)TA;
java.lang.Class#getDeclaredAnnotationsByType: <A::Ljava/lang/annotation/Annotation;>(Ljava/lang/Class<TA;>;)[TA;
java.util.Arrays#parallelSort: <T::Ljava/lang/Comparable<-TT;>;>([TT;)V
java.util.Arrays#parallelSort: <T::Ljava/lang/Comparable<-TT;>;>([TT;II)V
java.util.Collections#sort: <T::Ljava/lang/Comparable<-TT;>;>(Ljava/util/List<TT;>;)V
Run Code Online (Sandbox Code Playgroud)
在这些类中的所有方法中,这些是唯一具有::签名的方法.我的问题是这个令牌的作用以及它存在的原因.
编辑
我知道Java语言中的::运算符,但这是字节码级别的内容.
在C#代码中,我找到了这个工具。
我试图找出in和out的含义,但只解释其中的out关键字。
那么这些in和out关键字做什么呢?
public delegate Tb Reader<in Ta, out Tb>( Ta a );
Run Code Online (Sandbox Code Playgroud) 重复:函数重载按返回类型?
也许这是一个非常愚蠢的问题,但我不明白为什么我不能声明两个具有相同签名的方法,当它们具有不同的返回类型时.
public class MyClass
{
private double d = 0;
public double MyMethod()
{
return d;
}
public string MyMethod()
{
return d.ToString();
}
}
Run Code Online (Sandbox Code Playgroud)
我收到一个编译错误,指出该类已经定义了具有相同参数类型的成员.
(显然,我在我的代码中使用它的方式并不像我的示例代码那么简单......但我认为它可以解决这个问题.)
我是否遗漏了有关OO设计的内容,这使得我正在尝试做一个OOP反模式?当然,编译器应该能够确定我尝试使用哪种方法,只要我具体告诉它我想要哪一种方法.
鉴于MyClass myClass = new MyClass();我希望以下代码可以工作:
double d = myClass.MyMethod();
string s = myClass.MyMethod();
Run Code Online (Sandbox Code Playgroud)
我希望以下代码有问题:
var v = myClass.MyMethod();
Run Code Online (Sandbox Code Playgroud)
但即使在var它的情况下也应该导致编译错误.
谁能看到我在这里做错了什么?我很高兴得到纠正.:-)
我是编程新手,正在参加C#课程。尝试编写此程序时出现编译器错误CS1001。
我阅读了“编译器错误”说明(下面的链接),但是我真的没明白。我究竟做错了什么?
http://msdn.microsoft.com/zh-CN/library/b839hwk4.aspx
这是我的源代码:
using System;
public class InputMethodDemoTwo
{
public static void Main()
{
int first, second;
InputMethod(out first, out second);
Console.WriteLine("After InputMethod first is {0}", first);
Console.WriteLine("and second is {0}", second);
}
public static void InputMethod(out first, out second)
// The error is citing the line above this note.
{
one = DataEntry("first");
two = DataEntry("second");
}
public static void DataEntry(out int one, out int two)
{
string s1, s2;
Console.Write("Enter first integer ");
s1 = Console.ReadLine();
Console.Write("Enter …Run Code Online (Sandbox Code Playgroud) 如何使用Java反射获取方法签名?
编辑: 我实际上需要参数NAMES而不是方法的类型.
为什么Objective-C编译器需要在编译时知道在将对象推迟到运行时(即动态绑定)时将在对象上调用的方法的签名?例如,如果我写[foo someMethod],为什么编译器需要知道签名someMethod?
我在这里有一个相当简单的IntelliJ /工具问题:
我正在处理一些遗留代码,并开始在这里和那里重做工作.我经常偶然发现的是在方法签名中声明(检查)异常,尽管这些异常永远不会抛出体内.
这些声明也不是由接口或类似的东西强制执行,因为这个问题主要发生在MVC控制器中,显然总是一遍又一遍地复制和粘贴.
我想知道是否有办法用IntelliJ搜索这些声明的异常.
因为如果我把我的插入符号放在throws关键字上它没有突出显示任何内容,因为声明的异常永远不会被抛出,但编辑器也没有向我显示错误标记,我真的很感激:)
IntelliJ中是否有一个选项可以启用这个功能还是存在可以完成这项工作的插件?
提前致谢.
因此,我基本上尝试获取 2 个 DateTime 对象并将它们设置为各自月份的第一天,以便我最终可以计算两个日期之间的月份。
代码示例:
DateTime dt = new DateTime();
DateTime newDT = dt.withDayOfMonth(1);
Run Code Online (Sandbox Code Playgroud)
在任何人询问之前,实际代码将 Date 对象转换为 DateTime 对象,该对象在代码的另一部分中使用。
问题是,当我在单元测试中执行此操作时,它似乎工作得很好。但是,当我尝试使用 SOAP UI 对此进行测试时,我可以在调试过程中看到由于以下原因而出现运行时异常:
method lookup failed for selector "withDayOfMonth" with signature "(I)Lorg/joda/time/DateTime;"
Run Code Online (Sandbox Code Playgroud)
在相应的 server.txt 日志文件中,我可以看到堆栈跟踪,表明没有这样的方法没有发生
经过进一步研究,我发现我们的应用程序服务器当前使用过时版本的 JodaTime jar (1.2.1),而我的 eclipse 库包含正确的 jar (1.6.2)。
然而,现在的问题是,由于我无法访问 JodaTime 提供的 withDayOfMonth 方法,因此实现我的目标的最佳方法是什么(创建一个新的 DateTime 对象,并将该月的第一天设置为 0)?
method-signature ×10
java ×4
c# ×3
generics ×2
com ×1
date ×1
datetime ×1
delegates ×1
f# ×1
identifier ×1
jodatime ×1
jvm ×1
jvm-bytecode ×1
methods ×1
objective-c ×1
reflection ×1
vbscript ×1