【发布时间】:2018-09-28 13:12:30
【问题描述】:
关于使用新的 C# 7.0 元组语法的方法重载的快速问题。
我创建了两个函数重载。简而言之,它们大致如下:
public Boolean TheFunction( string p_in_value )
{
...
return true;
}
和
public ( Boolean Result, long SomeID ) TheFunction( string p_in_value )
{
...
return ( true, _found_id );
}
现在,我会争辩说,因为他们各自的电话会采用以下形式
_my_bool = TheFunction( "" );
和
( _my_bool, _my_long ) = TheFunction( "" );
编译器应该能够区分两者,从而满足创建重载时需要能够确定要调用哪个版本的基本要求。
现在,我在另一个问题中读到,最近在 C# 3.0 中,方法的签名不包括其返回类型,但肯定不再适用,因为我在其他地方有没有问题的函数:
public long ReadHive(string p_section, string p_setting, long p_default) {...}
public bool ReadHive(string p_section, string p_setting, bool p_default) {...}
尽管如此,我收到了语法错误“'Program' 已经定义了一个名为 'TheFunction' 的成员具有相同的参数类型”。
因此,除非我只是看错了东西,否则似乎使用这种新的元组返回语法,返回类型在区分一个版本和另一个版本方面没有任何作用,这看起来有点短视。
所以,我的问题是——我看错了东西,这应该是可能的,还是我运气不好,新语法在这方面不够用?还是我更错了,我的“TheFunction”方法的处理方式与“ReadHive”方法的处理方式之间存在一些根本区别?
【问题讨论】:
-
这不是语言/编译器的设计方式。
-
你的
ReadHive方法不一样。
标签: c# methods syntax tuples overloading