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或更高版本。为什么不完成枚举?为什么要允许它没有定义的值,而这些值在您的应用程序中又没有特定的意义呢?所讨论的应用程序实现了一个全局标准的子集,它扩展到了专有用途。基本上不可能定义所有可能的值-我只需要为与我的功能子集相关的值定义帮助器。