静态字符串插值

时间:2019-01-02 14:36:42

标签: c# string static interpolation

df = df[ df['Sentence'].duplicated(keep=False)]
df = df[df.groupby('Sentence')['Score_Unigram'].transform('max') == df['Score_Unigram']]
df = df[df.groupby(['Sentence', 'Score_Unigram'])['Score_Bigram'].transform('max') == df['Score_Bigram']]
print (df)
     Sentence  Score_Unigram  Score_Bigram  versionId
0   As of Dat              5             1  269004158
3  Date Docum              5             3  345973060
5  Date Docum              5             3  372529352
9   Date $ in              9             4  372529352

在上面的示例中,public static class SomeRegexConsts { public static readonly string FullName = $"{Name} {Surname}"; private static readonly string Name = "[A-Z][a-z]+"; private static readonly string Surname = "[A-Z][a-z]+"; } 在运行时等于FullName。 它与静态字段的初始化方式(从上到下)有关。

一般而言,我看不到其他解决方案:

" "

任何想法如何改进此代码,因为我不喜欢此lambda,并且不能将public static string FullName => $"{Name} {Surname}"; FullName移到NameSurname下,因为StyleCop不允许我这样做这个。

3 个答案:

答案 0 :(得分:2)

如果您不想将FullName移到其他人的下方,我认为这是唯一的解决方案。

public static class SomeRegexConsts
{
    static SomeRegexConsts(){
        FullName = $"{Name} {Surname}";
    }

    public static readonly string FullName;

    private static readonly string Name = "[A-Z][a-z]+";

    private static readonly string Surname = "[A-Z][a-z]+";

答案 1 :(得分:0)

如何创建一个返回FullName字符串的公共方法?

public string getFullname()
{
    return $"{Name} {Surname}";
}

这样public static readonly string FullName = $"{Name} {Surname}";(如果可以摆脱它的话)就不再需要了。

答案 2 :(得分:0)

我相信这将与StyleCop一起使用,因为在任何类型的字段之前都需要const

public static class SomeRegexConsts
{
    private const string Name = "[A-Z][a-z]+";
    private const string Surname = "[A-Z][a-z]+";

    public static readonly string FullName = $"{Name} {Surname}";

}

除非您在需要非常量字段的类中使用反射,否则编译后的代码应不受影响。