在VB.NET中缩放传递值的数量

时间:2013-08-13 15:13:34

标签: vb.net pass-by-value

我正在编写一个XML编写器,并且可以编写这个...

<?xml version="1.0" encoding="utf-8"?>
<mappings>
    <entry name="Iasanator">
        <item code="Red">He Needs Help</item>
    </entry>
</mappings>

...但我需要能够将不同数量的 id =“whatever”语句传递到XMLWriter.WriteHeader(#这些需要扩展)sub。

<header id="whatever" href="this" code="that" name="and so on".......>

由于重载sub,我可以提出两个,但是如何在不为每个可能的情况编写单独的重载子的情况下输入... 15或者其他东西?

编辑:Nkvu,我自己解决了这个问题,然后读到你有类似的想法。 伟大思想相似。我使用了一种类似你建议的数组,除了我使用字典列表,其中“parameters = New Dictionary(Of String,String)”。

可以在http://pastebin.com/03TuX0Pd

找到整个XML Writer

如果你发现其中一些令人困惑,(我不是评论最好的东西)随意发表评论并提出问题。我很乐意回答。

1 个答案:

答案 0 :(得分:1)

你能发布到目前为止的VB.NET代码吗?

从广义上讲,我可以想到两个选择:

具有可变参数数量的成员

你可能想要this这样的东西,你可以在其中传递可变数量的参数,然后迭代它们并决定如何处理它。

每个参数都可以是您的标题ID(如果它是一个字符串或某个类似整数的基类型),或者您可以传入一个类/复杂类型(例如,您可以拥有一个Header类,该类具有以下属性: ID,href,代码,名称等)。

对于复杂类型,您的签名看起来像:

Public Sub DoStuff(ParamArray list() as HeaderClass) 

你会称之为:

DoStuff(headerObj1, headerObj2, headerObj3)

其中headerObj1等是您之前创建的对象

传入数组/列表/集合

你也可以只是形成一个List或其他集合类型并将其传递给你的子。

所以你的子签名看起来像:

Public Sub DoStuff(headers as List(of HeaderClass)) 

你会称之为:

Dim headerList As List(Of HeaderClass) = New List(Of HeaderClass)
headerList.Add(headerObj1)
headerList.Add(headerObj2)
headerList.Add(headerObj3)

DoStuff(headerList)

然后您的子点可以遍历列表并执行需要完成的操作。