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

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">


像这样将“汽车”类型定义为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);
    }
}


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

最佳答案

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

如果类型没有名称空间,则可以在之前添加前缀(无论如何在C#中)。

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

10-17 02:44