无法在另一种方法中访问字符串

时间:2017-01-30 03:57:23

标签: c# methods

我花了最后几天试图弄明白这一点没有运气,我希望你能帮帮忙,我对c#很新。

下面是我的控制台应用程序的一部分,两种不同的方法在他们自己的不同速度运行的独立计时器中,因此它们不能使用相同的方法。我正在使用通过httpclient发送json的JSON.net / JObject。

我正在尝试访问

的结果
JObject Grab = JObject.Parse(httpResponse(@"https://api.example.jp/json.json").Result);

string itemTitle = (string)Grab["channel"]["item"][0]["title"];

来自不同的方法,使用此代码

Console.WriteLine(itemTitle);

我尝试了很多不同的方法,但都没有成功。 以下是关于Json.net的完整代码部分。

namespace ConsoleApplication3
{
internal class Program
{
        ...other code

    public static async Task<string> httpResponse(string url)
    {
        HttpClientHandler httpHandler = new HttpClientHandler()
        {
            AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
        };
        using (var httpClient = new HttpClient(httpHandler))
            return await httpClient.GetStringAsync(url);
    }

    public static void JSONUpdateTimer(object sender, ElapsedEventArgs e)
    {
        JObject Grab = JObject.Parse(httpResponse(@"https://api.example.jp/json.json").Result);

        string itemTitle = (string)Grab["channel"]["item"][0]["title"];
        Console.WriteLine(itemTitle);

        JSONUpdate.Interval = JSONUpdateInterval();
        JSONUpdate.Start();
    }

    public static void SecondTimer(object source, ElapsedEventArgs e)
    {
        Console.WriteLine(itemTitle);
        ...other Commands using "itemTitle"
    }
}
}

我有一种不好的感觉,我错过了一些如此明显的东西,如果它指出我将面对手掌。但我会感激任何帮助。

1 个答案:

答案 0 :(得分:3)

在任何方法之外声明一个名为itemTitle的字符串字段作为该类的成员。

internal class Program
{
    static string itemTitle; 
    //other code...
}

在你的方法中,不要声明一个新变量,只需引用该字段。

public static void JSONUpdateTimer(object sender, ElapsedEventArgs e)
{
    //...
    itemTitle = (string)Grab["channel"]["item"][0]["title"];
    //...
}

在方法中声明的变量本地作用于该方法,并且不存在于该方法之外。