小编Nig*_*ins的帖子

XML模式中ref和type之间的区别是什么?

请考虑以下架构:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:complexType name="Root">
        <xs:sequence>
            <xs:element ref="Child" />
            <xs:element name="Child2" type="Child" />
        </xs:sequence>
        <xs:attribute ref="Att" />
        <xs:attribute name="Att2" type="Att" />
    </xs:complexType>

    <xs:complexType name="Child">
        <xs:attribute ref="Att" />
    </xs:complexType>

    <xs:attribute name="Att" type="xs:integer" />

</xs:schema> 
Run Code Online (Sandbox Code Playgroud)

ref6行的"Child"失败,而第type7行验证.对于属性,失败时ref成功type.我想知道为什么.

我的理解ref是,它只是引用了另一个元素,并指定您希望在该位置看到引用类型的实例(在定义中给出名称).显然我错了,那ref究竟是什么意思呢?

xml schema xsd

18
推荐指数
1
解决办法
3万
查看次数

.NET TreeView不会显示图像

在获取TreeView控件以显示节点图像时出现问题.下面的代码有时会工作,但有时无法显示任何图像.


private TreeNode AddNodeForCore(TreeNode root, Core c) {
    string key = GetImageKey(c);
    TreeNode t = root.Nodes.Add(c.Name, c.Name, key, key);
    t.Tag = c;
    return t;
}
Run Code Online (Sandbox Code Playgroud)

请注意,当它失败时,TreeView无法显示任何节点的任何图像.TreeView确实为其分配了ImageList,图像键肯定在图像集合中.

编辑:
我的google-fu很弱.简直不敢相信我没有找到答案.

.net c# winforms

5
推荐指数
1
解决办法
3429
查看次数

stl容器中的const和非const

STL向量模板将元素访问器定义为const和非const变体,例如:

reference operator[](size_type __n) 
    {return *(this->_M_impl._M_start + __n);}
const_reference operator[](size_type __n) const 
    {return *(this->_M_impl._M_start + __n);}
Run Code Online (Sandbox Code Playgroud)

什么时候编译器决定使用一个版本而不是另一个版本?向量本身未定义为const,也不存储在其中的元素.所以有两个功能:

A f(int i) const
    { return myVector[i]; }
A f(int i)
    { return myVector[i]; }
Run Code Online (Sandbox Code Playgroud)

我的理解是,第一个将调用operator []的const版本并返回一个const A.第二个调用非const版本并返回一个非const A?

对我来说,f()的第一个版本似乎是"正确的"写入,因为函数没有改变任何东西,但是调用者可能会惊讶于它返回一个const A.当然如果我想要一个const返回,我应该将f()定义为:

const A f(int i) const    //Note the extra const at the start
    { return myVector[i]; }
Run Code Online (Sandbox Code Playgroud)

哪个会告诉谁打算调用者期望一个const回来.

所以额外的const出现了魔法?如果我使用boost :: ptr_vector而不是std :: vector,那么额外的const应用于什么?数据?指针?都?

c++ boost stl

5
推荐指数
1
解决办法
2058
查看次数

C#如何在方法调用中的多个接口之间消除歧义?

假设我有一个C继承自2个接口(I1I2)的类.我还有一个方法(DoStuff)的两个版本,每个版本都将一个接口作为参数.如果我打电话DoStuff(C),哪一个被叫?

interface I1 { ... }
interface I2 { ... }
class C : I1, I2 { ... }

int DoStuff(I1 target) { ... }
int DoStuff(I2 target) { ... }

//What gets called here?
C target = new C()
DoStuff(target)
Run Code Online (Sandbox Code Playgroud)

如果I2派生自I1,我认为它相对简单 - I2版本被调用.我对接口是独立的情况感兴趣.

假设我无法编辑C,I1I2.和.NET 2.0如果有任何区别.

c# interface disambiguation

3
推荐指数
2
解决办法
559
查看次数

VB.Net无参数方法似乎是接受参数

我有以下函数定义:

Function Parameterless() as String
Run Code Online (Sandbox Code Playgroud)

它没有覆盖或重载.以下行将很乐意编译并运行:

Dim s as String = Parameterless(1)
Run Code Online (Sandbox Code Playgroud)

到底是怎么回事?

vb.net

3
推荐指数
1
解决办法
55
查看次数

标签 统计

c# ×2

.net ×1

boost ×1

c++ ×1

disambiguation ×1

interface ×1

schema ×1

stl ×1

vb.net ×1

winforms ×1

xml ×1

xsd ×1