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