以下是什么是方法签名?
int DoSomething(int a, int b);
Run Code Online (Sandbox Code Playgroud)
返回类型是签名的一部分或不?
ean*_*533 70
返回类型不是C#中方法签名的一部分.只有方法名称及其参数类型(而不是参数名称)才是签名的一部分.例如,你不能有这两种方法:
int DoSomething(int a, int b);
string DoSomething(int a, int b);
Run Code Online (Sandbox Code Playgroud)
需要明确的是:方法不能根据其返回类型重载.它们必须具有唯一名称,唯一参数类型,或以不同方式传递其参数(例如,使用out或ref).
编辑:要回答原始问题,方法的方法签名是:
DoSomething(int, int)
Run Code Online (Sandbox Code Playgroud)
请注意,这一切都适用于常规方法.如果你在谈论delegates,那么你应该看看keyboardP的答案.(简短版本:返回类型IS代表签名的一部分).
Eri*_*ert 46
返回类型是否是签名的一部分?
这取决于你提出问题的原因.你为什么在乎?
方法签名有两种定义.C#语言的定义并没有包括返回类型,并使用该方法的签名,以确定两个重载是否是允许的.一种类型中不允许使用两种具有相同签名的方法.由于C#不认为返回类型是签名的一部分,因此C#不允许两个仅在返回类型上有所不同的方法在同一类型中声明.
但是,CLR确实包含签名中的返回类型.CLR允许两种方法属于同一类型,仅在返回类型上有所不同.
更具体一点:在C#中,签名包含以下方法:
以下附加说明:
在CLR中,签名包括:
请注意,在考虑签名时,CLR根本不区分"ref int"和"out int".请注意,CLR 确实区分modopt/modreq类型.(C#编译器处理modopt/modreq类型的方式过于复杂,无法在此总结.)
| 归档时间: |
|
| 查看次数: |
45189 次 |
| 最近记录: |