我想创建一个Google翻译链接,具体取决于我的输入。为了使事情更清楚,这里是我的“动态链接”:
private static string _GoogleLink = $"https://translate.google.com/?hl=de#{_SourceLanguage}/{_TargetLanguage}/{_SourceInput}"
我认为很清楚我想做什么,但是该链接无法正常工作,只是输入
https://translate.google.com/?hl=de#//
在我的浏览器中。我使用这种方法执行链接:
public static void Translate(string input, string sourceLang, string targetLang)
{
_SourceInput = input;
_TargetLanguage = targetLang;
_SourceLanguage = sourceLang;
System.Diagnostics.Process.Start(_GoogleLink);
}
答案 0 :(得分:1)
您的静态字段在创建静态对象时进行评估,永远不会使用正确的值“更新”-使用属性代替字段,该字段在每次调用getter时都会进行评估。
private static string _GoogleLink => $"https://translate.google.com/?hl=de#{_SourceLanguage}/{_TargetLanguage}/{_SourceInput}";
或旧式语法
private static string _GoogleLink { get { return $"https://translate.google.com/?hl=de#{_SourceLanguage}/{_TargetLanguage}/{_SourceInput}"; } }
但是您应该考虑为此重新设计方法:
//instead of void - use string as a return
public static string Translate(string input, string sourceLang, string targetLang)
{
//instead of saving your passed values, into static fields - transform the string right here and now and return it
return $"https://translate.google.com/?hl=de#{sourceLang}/{targetLang}/{input}";
}
我相信这种语法更容易理解。