为什么称为DefaultStringValue的属性始终总是在IntelliSense中首先出现?

时间:2018-10-31 15:49:11

标签: c# visual-studio-2017 resharper intellisense

如果您定义以下类:

def filter_bow_by_tfidf(bow_doc, tfidf_doc):
    bow_idx = len(bow_doc)-1
    tfidf_idx = len(tfidf_doc)-1

    #print('before :', len(bow_doc))

    while True:
        if bow_idx < 0: break

        if tfidf_idx < 0:
            #print('pop2 :', bow_doc.pop(bow_idx))
            bow_doc.pop(bow_idx)
            bow_idx -= 1
        if bow_doc[bow_idx][0] > tfidf_doc[tfidf_idx][0]:
            #print('pop1 :', bow_doc.pop(bow_idx))
            bow_doc.pop(bow_idx)
            bow_idx -= 1
        if bow_doc[bow_idx][0] == tfidf_doc[tfidf_idx][0]:
            #print('keep :', bow_doc[bow_idx])
            bow_idx -= 1
            tfidf_idx -= 1

    #print('after :', len(bow_doc))

    return bow_doc

然后,当您使用IntelliSense列出属性时,public class Test { public string Something { get; set; } public string AnotherThing { get; set; } public string DefaultStringValue { get; set; } } 会首先出现在列表中,尽管这不是按字母顺序排列的:

enter image description here

如果将属性名称更改为 anything else,将恢复正常服务:

enter image description here

有人知道这是为什么吗?我很好奇...

(注意:我也在使用Resharper Ultimate 2018.1.2)

1 个答案:

答案 0 :(得分:1)

这是IntelliSense(和/或ReSharper),是智能的,可以帮助您重用以前使用过的东西。如果从零开始,您会发现事情是按字母顺序进行的:

enter image description here

我敢打赌,过去某个时候,您使用的是DefaultStringValue属性,而不是其他属性,因此建议您首先使用它:

enter image description here

enter image description here

已将其重命名,如果您输入行t.DefaultStringValu = "x";,然后再次将其删除,那么下次您输入t.并调用IntelliSense时,DefaultStringValu将成为列表的顶部:< / p>

enter image description here

enter image description here

enter image description here