【问题标题】:Avoiding Boxing/Unboxing on unknown input避免对未知输入进行装箱/拆箱
【发布时间】:2011-07-04 10:42:43
【问题描述】:

我正在创建一个解析 XML 并检索一些数据的应用程序。每个 xml 节点指定数据 (const)、从 (var) 获取数据的记录集的列名、取决于某些条件 (enum) 和其他条件的可能数据值的子集。除了数据之外,它还可以指定必须向用户显示数据的格式。

问题是,对于每种节点类型,我需要以不同的方式处理值并执行一些动作,因此,对于每个节点,我需要将返回值存储在临时变量中以便稍后对其进行格式化...我知道我可以在那里格式化并返回它,但这意味着重复我自己,我讨厌这样做。

所以,问题是:如何将要返回的值存储在临时变量中,同时在类型未知且我不能使用泛型时避免装箱/拆箱?

P.S.:我正在设计解析器、XML Schema 和将填充记录集的视图,因此对所有内容的更改都是合理的。


更新

我无法发布代码或 XML 值,但这是 XML 结构和实际标签。

<?xml version='1.0' encoding='utf-8'?>
<root>
    <entity>

        <header>
            <field type="const">C1</field>
            <field type="const">C2</field>

            <field type="count" />
            <field type="sum" precision="2">some_recordset_field</field> 

            <field type="const">C3</field>
            <field type="const">C4</field>
            <field type="const">C5</field>
        </header>

        <detail>
            <field type="enum" fieldName="some_recordset_field">
                <match value="0">M1</match>
                <match value="1">M2</match>
            </field>
            <field type="const">C6</field>

            <field type="const">C7</field>
            <field type="const">C8</field>
            <field type="var" format="0000000000">some_recordset_field</field>
            <field type="var" format="MMddyyyy">some_recordset_field</field>
            <field type="var" format="0000000000" precision="2">some_recordset_field</field>
            <field type="var" format="0000000000">some_recordset_field</field>
            <field type="enum" fieldName ="some_recordset_field">
                <match value="0">M3</match>
                <match value="1">M4</match>
            </field>
            <field type="const">C9</field>
        </detail>

    </entity>
</root>

【问题讨论】:

  • 如果你能提供一些示例代码,那真的很有帮助——目前有点混乱。
  • 更多信息会很好,你说的有点像:我需要为那件事做点什么
  • 你应该使用泛型,但我们需要一段代码。
  • 我希望我能...... .net-1.1 中没有泛型
  • 然后快乐地享受拳击。如果有人在 2011 年付钱让你用 .NET 1.1 编程,那么他会非常乐意与拳击一起生活! :-)

标签: vb.net formatting .net-1.1 boxing unboxing


【解决方案1】:

您是否尝试过使用 var 类型?这样你就不需要知道每个节点的类型。此外,您的场景中的一些小样本也会很有用。

【讨论】:

  • 哇啊啊啊! var 不是这样!这是一个编译器快捷方式。编译器将在编译期间分配类型。静如磐石!
  • 还有一个链接让你知道stackoverflow.com/questions/1552881/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多