Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
"name" är tvetydig mellan "name" och "nameAttribute". använd antingen "@name" eller "nameAttribute".
Kompilatorn har påträffat en tvetydig attributspecifikation.
För enkelhetens skull kan du med C#-kompilatorn ange ExampleAttribute som bara [Example]. Tvetydighet uppstår dock om det finns en attributklass med namnet Example tillsammans med ExampleAttribute, eftersom kompilatorn inte kan avgöra om [Example] refererar till Example attributet eller attributet ExampleAttribute . För att förtydliga använder du [@Example] för attributet Example och [ExampleAttribute] för ExampleAttribute.
Följande exempel genererar CS1614:
// CS1614.cs
using System;
// Both of the following classes are valid attributes with valid
// names (MySpecial and MySpecialAttribute). However, because the lookup
// rules for attributes involves auto-appending the 'Attribute' suffix
// to the identifier, these two attributes become ambiguous; that is,
// if you specify MySpecial, the compiler can't tell if you want
// MySpecial or MySpecialAttribute.
public class MySpecial : Attribute {
public MySpecial() {}
}
public class MySpecialAttribute : Attribute {
public MySpecialAttribute() {}
}
class MakeAWarning {
[MySpecial()] // CS1614
// Ambiguous: MySpecial or MySpecialAttribute?
public static void Main() {
}
[@MySpecial()] // This isn't ambiguous, it binds to the first attribute above.
public static void NoWarning() {
}
[MySpecialAttribute()] // This isn't ambiguous, it binds to the second attribute above.
public static void NoWarning2() {
}
[@MySpecialAttribute()] // This is also legal.
public static void NoWarning3() {
}
}