2009-10-07 49 views
2

是否有一个设置,在Visual Studio中的intellisense也将变量放入intellisense弹出窗口而不仅仅是枚举类型的值?它显然知道它应该是一个枚举。也许这只是一种机制,可以防止我在那里放置可能导致异常的东西。Visual Studio 2008 intellisense枚举类型

考虑以下设置:(这是一个有点做作,我很抱歉。)现在

Public Enum PhraseEmphasis 
    Monotone = 0 
    Question 
    Statement 
    Exclamation 
    CrazyExclamation 
    QuestioningExclamation 
    Cursing 
End Enum 

Private _emphasisFromCode as PhraseEmphasis 

Public Function Speak(ByVal phrase As String, ByVal emphasis As PhraseEmphasis) as String 
Select Case emphasis 
    Case PhraseEmphasis.Question 
    Return phrase + '?' 
    Case PhraseEmphasis.Statement 
    Return phrase + '.' 
    Case PhraseEmphasis.Exclamation 
    Return phrase + '!' 
    Case PhraseEmphasis.CrazyExclamation 
    Return phrase + '!!!1!eleven!!' 
    Case PhraseEmphasis.QuestioningExclamation 
    Return phrase + '?!' 
    Case PhraseEmphasis.Cursing 
    Return '[email protected]#@%@#!' 
    Case Else 
    Return phrase 
End Select 
End Function 

,在代码中我有一些设置_emphasisFromCode(明显),然后我想调用该函数。然后,当我开始在Elipses处打字说话时(“HelloWorld”,...) ,我不喜欢intellisense。在intellisense中唯一弹出的是所有枚举的列表。

现在我花了很多时间来解释这个问题,关于我真正关心的事情。但是,我的机器今天编译非常慢。

+0

我真的不明白你的问题。你能否详细解释一下? – 2009-10-07 14:59:08

回答

1

不,没有这样的设置。智能感知列举了枚举,以便您快速选择一个。如果你有一个存储在变量中的变量(或者PhraseEmphasis类型的多个变量),它将不会为你的代码寻找匹配参数类型的变量来填充参数建议。

除此之外,只有相关的设置,以启用/禁用智能感知:

visual studio options http://i38.tinypic.com/24e4bht.jpg

VB已经基本下的其他选项 - 你有什么建议> VB具体,但仍然一无所获。

据我所知,我不认为CodeRush/Refactor! Pro或ReSharper(Visual Studio加载项)也提供此功能。

1

不,没有这样的设置。智能感知如何从您的方法签名中猜测,您希望为方法赋予一个任意值,而签名恰恰相反?

相反,你可以声明另一个枚举成员(比如PhraseEmphasis.None = 0,这是推荐的最佳做法反正)和使用,或最终声明emphasis参数与optional关键字完全避免提供信息的需要。

+0

枚举类型的变量不是任意值。我希望看到这种类型的枚举也在列表中。 – 2009-10-14 15:35:49

+0

这将与枚举概念相矛盾。枚举是一个_type_,它由一组具有基础基本类型的具体值组成。因此,除了列举这个枚举的值之外,其他所有内容都不符合强类型编程语言的概念...... – 2009-10-15 07:37:01