关于参数为表达式的方法重载的一个bug
首先个人觉得是个bug.
不是运行bug,是vs的重载提示的问题.
环境VS2010 .net 4.0
代码如下:
大家可以试试,当调用Update的时候,居然默认智能提示是private的方法.
Test t = new Test();
t.Update(s=>s. //当输入这里的时候居然 "点" 出来的是 Person 成员.
更奇怪的是,当把两个方法的代码位置更换一下,奇怪的现象有发生了,居然"点"出来了TestObject对象成员(刚刚发现)
虽然影响不大,也很好处理, 我确实花了一个多小找到问题所在
不是运行bug,是vs的重载提示的问题.
环境VS2010 .net 4.0
代码如下:
public class Person
{
public string Name { set; get; }
public string Age { set; get; }
}
public class TestObject
{
public string AA { set; get; }
public string BB { set; get; }
}
public class Test
{
//修饰符非public
private void Update(Func<Person, object> whereFun)
{
}
public void Update(Func<TestObject, bool> whereFun)
{
}
}
大家可以试试,当调用Update的时候,居然默认智能提示是private的方法.
Test t = new Test();
t.Update(s=>s. //当输入这里的时候居然 "点" 出来的是 Person 成员.
更奇怪的是,当把两个方法的代码位置更换一下,奇怪的现象有发生了,居然"点"出来了TestObject对象成员(刚刚发现)
虽然影响不大,也很好处理, 我确实花了一个多小找到问题所在
...全文
相关推荐
更锋利的C#代码--编写高质量C#程序
虽然省略大括号在某些情况下是允许的,但在未来添加代码时可能会引入bug。3. **仅包含单个语句的结构体**: - 即使代码块只包含一个语句,也应该使用大括号。
高质量C++编程指南
#### 八、C++函数高级特性- **函数重载概念**:函数重载允许同名函数具有不同的参数列表。- **成员函数重载、覆盖与隐藏**:成员函数可以重载、覆盖或隐藏基类的方法。
js中方法重载如何实现?以及函数的参数问题.docx
使用命名函数表达式,为每个重载版本创建不同的函数,然后根据需要选择调用。2. 使用闭包创建私有作用域,每个闭包中包含一个特定参数版本的函数。3.
c++ 运算符重载和方法重载
C++运算符重载和方法重载是面向对象编程中重要的概念,它允许程序员扩展类的行为,使其适应特定的应用场景。在处理字符串操作时,C++提供了多个内置函数,如strcpy(), strcmp(), strc
sqrt对重载函数的调用不明确-的处理方法.txt.zip
当你尝试对一个未指定类型的表达式调用`sqrt`时,编译器可能找不到最佳匹配的函数,从而引发“调用不明确”的错误。


