【发布时间】:2012-03-13 13:47:09
【问题描述】:
所有 C# 向导的问题。我有一个方法,称为 myFunc,它采用可变长度/类型的参数列表。 myFunc 本身的参数签名是myFunc(params object[] args),我在列表上使用反射(例如,这有点像 printf)。
我想区别对待myFunc(1, 2, 3) 和myFunc(new int[] { 1, 2, 3 })。也就是说,在 myFunc 的主体中,我想枚举我的参数的类型,并希望以 { int, int, int} 而不是 int[] 结束。现在我得到后者:实际上,我无法区分这两种情况,它们都以 int[] 的形式出现。
我希望前者显示为 obs[].Length=3,obs[0]=1 等。
我曾预计后者会显示为 obs[].Length=1,其中 obs[0]={ int[3] }
这可以做到吗,还是我在问不可能?
【问题讨论】:
-
你到底为什么需要这样的东西
-
你怎么能指望
obs[0]是一个数组呢?obs是int[],它的类型在编译时是已知的,它的元素只能是int类型。如果您有params object[],那么您可能会争辩说object[]也是object,但这没有意义。 -
看看 isis2.codeplex.com。我需要去教一门课,90 分钟后回来,然后再看这个帖子。这个问题实际上与对“查询”的“回复”调用有关。文档有很多例子。 Jongboom,对不起,你发现这令人困惑。但如果你看到了目标,也许这会有所帮助。
-
@KenBirman:应该没问题,如果你有
params object[]作为参数类型。查看我简短但完整的程序...