gpt4 book ai didi

c# - 当符号共享相同的名称时,如何告诉 C# 编译器符号是类型而不是变量?

转载 作者:行者123 更新时间:2023-11-30 20:13:32 25 4
gpt4 key购买 nike

当你有一个与类型同名的局部变量时,有没有办法告诉编译器你给的符号是类型还是变量?例如考虑(并忽略所有类型返回错误):

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
  • A -> 错误(没有方法 DoSomething())
  • B -> 作品
  • C -> 作品
  • D -> 错误(没有方法 Trim())

从更实用的角度来看

(如果 XSD 让您感到厌烦,您可能想跳过此部分):

我目前正在尝试让 LINQ to XSD 正常工作。在我的 XSD 文件中有这样的 xs:elements:

<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);
}
}

但由于上述问题,这将无法编译。

最佳答案

您应该完全限定类型的命名空间。

如果类型没有命名空间,那么您可以在它前面加上global::(无论如何在 C# 中)。

关于c# - 当符号共享相同的名称时,如何告诉 C# 编译器符号是类型而不是变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1525445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com