我创建了一个模型类来说明这个问题:
<div class="main">
<div class="body-content">
<div class="blocka">
<div class="body-content-items">Add All</div>
<div class="body-content-items">Add All</div>
</div>
<div class="blocka">
<div class="body-content-items">Add All</div>
<div class="body-content-items">Add All</div>
</div>
</div>
</div>
如果我构建任何字符串对象,会怎么样?没有办法区分两个构造函数。定义具有相同参数数量的另一个构造函数是一种不好的做法吗?
答案 0 :(得分:1)
编译器将始终选择最具体的重载方法,即签名中具有string
参数的方法。即使你有一个泛型方法(或你的情况下是构造函数),显式类型string
参数也是最具体的参数。因此
new Anything<string>("test");
将输出
我是字符串类型的构造函数
从软件工程的角度来看,这确实是一种不好的做法,因为对于类的用户来说,不清楚为什么例如具有string
参数的构造函数将表现出与通用参数不同的行为。< / p>