C# 智能感知-它能得到一个提示来查看一系列常量吗?

C# 智能感知-它能得到一个提示来查看一系列常量吗?,c#,C#,如果我有一个方法参数是枚举,intellisense将获取此枚举的可能值,并让我选择一个。然而,这对我来说并不理想,因为人们可能希望使用我定义的集合之外的值。如果我将我的参数改为字节,那么我可以创建一个静态类,该类中填充的常量保存我定义的一组值-唯一的缺点是intellisense不知道这个值库。是否有一种方法可以将intellisense指向一系列“帮助器”值?从技术上讲,您可以将“无效”值指定给枚举。由于enum的备份存储是int,因此可以为其分配任何值: public enum X {

如果我有一个方法参数是
枚举
,intellisense将获取此枚举的可能值,并让我选择一个。然而,这对我来说并不理想,因为人们可能希望使用我定义的集合之外的值。如果我将我的参数改为
字节
,那么我可以创建一个静态类,该类中填充的常量保存我定义的一组值-唯一的缺点是intellisense不知道这个值库。是否有一种方法可以将intellisense指向一系列“帮助器”值?

从技术上讲,您可以将“无效”值指定给枚举。由于
enum
的备份存储是
int
,因此可以为其分配任何值:

public enum X
{
    A = 0,
    B = 1
}

class Program
{
    static void Main(string[] args)
    {
        X x = (X)2;
    }
}
这样,您仍然可以获得IntelliSense支持,并允许off值。当然,这也有缺点,所以你必须考虑它们是否超过了优点。

解决方法是在枚举中指定“自定义”值,并保留该值供以后使用:

public enum X
{
    A = 0,
    B = 1,

    Custom1 = 2
}

从技术上讲,您可以为枚举分配“无效”值。由于
enum
的备份存储是
int
,因此可以为其分配任何值:

public enum X
{
    A = 0,
    B = 1
}

class Program
{
    static void Main(string[] args)
    {
        X x = (X)2;
    }
}
这样,您仍然可以获得IntelliSense支持,并允许off值。当然,这也有缺点,所以你必须考虑它们是否超过了优点。

解决方法是在枚举中指定“自定义”值,并保留该值供以后使用:

public enum X
{
    A = 0,
    B = 1,

    Custom1 = 2
}

直接回答你问题中的智能感知部分,那么不,我认为这是不可能的

但是,我认为您可以通过使用函数重载来解决问题,通过这种方式,您可以使用任意一种类型,并兼有这两种类型的优点:

void Myfunction(MyEnum e)
{
    MyFunction((byte)e);
}

void MyFunction(byte b)
{
    // Do something
}

直接回答你的智力部分问题,那么不,我认为不可能这样做

但是,我认为您可以通过使用函数重载来解决问题,通过这种方式,您可以使用任意一种类型,并兼有这两种类型的优点:

void Myfunction(MyEnum e)
{
    MyFunction((byte)e);
}

void MyFunction(byte b)
{
    // Do something
}

您使用的GUI是什么?您可以创建一个新类,并要求该类的实例作为参数。例如,GUI是Visual Studio,比如说2012或更高版本。为什么不完成枚举?为什么要允许它没有定义的值,而这些值在您的应用程序中又没有特定的意义呢?所讨论的应用程序实现了一个全局标准的子集,它扩展到了专有用途。基本上不可能定义所有可能的值-我只需要为与功能子集相关的值定义帮助程序。您使用的GUI是什么?您可以创建一个新类,并要求该类的实例作为参数。例如,GUI是Visual Studio,比如说2012或更高版本。为什么不完成枚举?为什么要允许它没有定义的值,而这些值在您的应用程序中又没有特定的意义呢?所讨论的应用程序实现了一个全局标准的子集,它扩展到了专有用途。基本上不可能定义所有可能的值-我只需要为与我的功能子集相关的值定义帮助器。