C# 如何将类型作为参数传递

我想实现这样一个功能,将类型作为参数传递:已经有FrmA、FrmB、FrmC、FrmS等几个窗体类了,需要实现这样一个函数:fun(参数A){参数AF=new参数A();... 我想实现这样一个功能,将类型作为参数传递:
已经有FrmA、FrmB、FrmC、FrmS等几个窗体类了,
需要实现这样一个函数:
fun(参数A)
{
参数A F = new 参数A();
F.Show();
}

fun(FrmA);//就能新建并打开一个FrmA窗口
我知道switch ... case ,可是用 switch代码 会 很长 ,而且都是相同的代码。
那个映射机制我还不懂,那位大侠能说详细一点吗?
还有没有其他办法呢?

有更详细的或者更好的继续追加分

C#有没有像C++里函数模板那样的东西?

把问题简单一点:
调用fun("FrmA")打开FrmA窗口
调用fun("FrmB")打开FrmB窗口
...
但是不能用switch,因为窗口类有成百上千个
展开
 我来答
郑振英衣念
2020-06-01 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.4万
采纳率:35%
帮助的人:1022万
展开全部
直接作为object传过去,然后再根据需要检测类型:
public
void
show(object
o)
{
if
(o
is
label)
{
(o
as
label).text
=
"123";
}
else
if
(o
is
textbox)
{
(o
as
textbox).text
=
"123";
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yaji166
2008-07-03 · TA获得超过157个赞
知道小有建树答主
回答量:511
采纳率:0%
帮助的人:306万
展开全部
你那种思路传的参数只能是string 然后用反射机制实行 要不然以你的代码传的是一个类型 他的类型对象是空的

Assibly as = Assibly.Load(命名空间)
Object obj = as.createInstance(命名空间+类名)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c0d1146a0
2008-07-01 · TA获得超过167个赞
知道答主
回答量:185
采纳率:0%
帮助的人:130万
展开全部
参数有两种一个是值类型的,另外一种引用类型的,
(ref a)
另外一种是(object obj)
这两种做为参数,让你参考一下!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lcg1986
2008-07-01 · TA获得超过3374个赞
知道大有可为答主
回答量:1858
采纳率:90%
帮助的人:1611万
展开全部
用switch...case...不可以么??传入标记符.然后Switch这样做.

你非要这么做的话...好象用反射可以实现..
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
majunbopm
2008-07-01 · TA获得超过832个赞
知道小有建树答主
回答量:1027
采纳率:0%
帮助的人:1031万
展开全部
我想说的是你的参数类型怎么写?

是写string 还是form?

写string不能实现!如果你在转入方法的地方能找到窗体对象的话,就

可以传form过去!然后new实例!

如果是控件的话呢!还可以typeof,form不知道行不行!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(9)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式