我正在将VB.net代码转换为C#,我遇到了一个问题。使用VB.net,我有使用OBJECT参数的函数。这些参数通常有2种不同的类型,它们具有我需要的相同方法。例如:
Public Sub test(param1 as Object)
param1.show()
End Sub
使用C#,我会执行相同类型的功能,但编译器不会接受它。
public void test(object param1)
{
param1.show(); // Error on .show (not found)
}
我应该以某种方式转换参数,但我需要向函数发送不同的类型。有可能吗?
答案 0 :(得分:8)
这就是存在接口的原因。
public interface IShowable {
void show();
}
class YourClassFromAbove {
public void test(IShowable param1)
{
param1.show();
}
}
传入的任何类型都必须实现解决问题的IShowable
合同。
答案 1 :(得分:3)
如果您使用Option Strict Off
设置Object
,则相当于在C#中使用dynamic
public void test(dynamic param1)
{
param1.show();
}
然而,我真的,真的,建议你不要这样做。发明dynamic
是为了帮助编写后期绑定代码(也就是在引入此功能时VB6中提供的作业Object
),你真的应该使用带有接口的类来获取强类型信息为了你的代码。
答案 2 :(得分:0)
或者您可以为每种类型单独设置功能:
chunk 1, chunk 2, chunk 3, chunk 4