动态网页链接C#

时间:2018-10-30 07:43:31

标签: c#

我想创建一个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);
}

1 个答案:

答案 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}";
}

我相信这种语法更容易理解。