当你有一个名为与类型相同的局部变量时,有没有办法告诉编译器你给出的符号是一个类型还是一个变量?例如,考虑(并忽略所有类型的返回错误):
public class sometype { public static sometype DoSomething() {} }
public string sometype { get { return sometype.DoSomething(); } } //A
public string sometype { get { return sometype.Trim(); } } //B
public sometype sometype { get { return sometype.DoSomething(); } } //C
public sometype sometype { get { return sometype.Trim(); } } //D
(如果XSD让你胆怯,你可能想跳过这个):
我目前正在努力让LINQ到XSD工作。 在我的XSD文件中有xs:这样的元素:
<xs:element name="car" type="car">
'car'类型被定义为像这样的simpleType (可能还有一些限制,但实质上就是这样):
<xs:simpleType name="car">
<xs:restriction base="xs:string" />
</xs:simpleType>
LINQ to XSD自然会产生如下代码:
public string car {
get {
XElement x = this.GetElement(XName.Get("car", ""));
return XTypedServices.ParseValue<string>(x, XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.String).Datatype);
}
set {
this.SetElementWithValidation(XName.Get("car", ""), value, "car", car.TypeDefinition);
}
}
但是由于上述问题,这将无法编译。
答案 0 :(得分:5)
您应该完全限定该类型的命名空间。
如果类型没有命名空间,那么你可以在前面添加global::
(无论如何都是C#)。
答案 1 :(得分:2)
您可以查看C#规范以获取有关此行为的更多信息。以下是描述它的章节的开头:
7.3会员查询
成员查找是a的含义的过程 类型上下文中的名称是 决心。可以进行成员查找 作为评估简单名称的一部分 (§7.5.2)或成员访问(§7.5.4) 在表达中。如果是简单的名字 或成员访问发生 简单表达一个 invocation-expression(第7.5.5.1节),. 据说成员被援引。如果一个 成员是一种方法或事件,或者如果它 是一个恒定的,领域或属性的 委托类型(§15),然后是成员 据说是可以调用的。会员 查找不仅考虑名称 一个成员,但也是类型的数量 成员拥有的参数以及是否 会员可以访问。为了 成员查找的目的,通用 方法和嵌套泛型类型有 类型参数的数量 他们各自表示 声明和所有其他成员 没有类型参数。