C# 在C中的方法之间传递数据#

C# 在C中的方法之间传递数据#,c#,visual-studio-2012,windows-8,parameter-passing,C#,Visual Studio 2012,Windows 8,Parameter Passing,我的windows 8桌面应用程序中有以下代码。这将从web服务获取数据并将其填充到列表SampleDataGroup protected override async void LoadState(Object navigationParameter, Dictionary<String, Object> pageState) { HttpClient client = new HttpClient(); HttpResponseMessage response

我的windows 8桌面应用程序中有以下代码。这将从web服务获取数据并将其填充到列表
SampleDataGroup

protected override async void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
 {
    HttpClient client = new HttpClient();
    HttpResponseMessage response = await client.GetAsync("http://localhost:12345/api/items");

    var info = new List<SampleDataGroup>();

    if (response.IsSuccessStatusCode)
    {
        var content = await response.Content.ReadAsStringAsync();

        var item = JsonConvert.DeserializeObject<dynamic>(content);

        foreach (var data in item)
        {
            var infoSect = new SampleDataGroup
            (
                (string)data.Id.ToString(),
                (string)data.Name,
                (string)"",
                (string)data.PhotoUrl,
                (string)data.Description
            );
            info.Add(infoSect);
            //data=infoSect;
        }
    }
    else
    {
        MessageDialog dlg = new MessageDialog("Error");
        await dlg.ShowAsync();
    }
    }
在单击函数中,我想使用
名称
,以及第一个函数中的所有其他数据值

private void Item_Click(object sender, RoutedEventArgs e)
{
  //Use (string)data.Name
}
我尝试设置
SampleDataGroup data=null,然后使用上面注释掉的
data=infoSect
调用click函数中的data.Name,但返回空异常


如何将数据从一个函数传递到另一个函数?

目前,您的异步方法返回void,并且在填充它之后,您没有使用
info
执行任何操作。在我看来,您可能希望从方法返回该列表(例如,使其返回
Task
),或者使该方法在实例变量中设置状态,以便它成为调用该方法的对象状态的一部分

如果没有关于正在设计的类的更多信息,就很难知道这些信息在逻辑上是对象状态的一部分,还是应该从方法返回,但这些是您的基本选择。(有更复杂的选择,但这些是最先考虑的两个)。

你也应该考虑如果发生错误,你想在状态方面发生什么——你正在显示一个对话框,但是在那之后你想发生什么?

最简单的是声明一个全局对象,如

object item;
然后像这样改变它

if (response.IsSuccessStatusCode)
{
    var content = await response.Content.ReadAsStringAsync();

    item = JsonConvert.DeserializeObject<dynamic>(content);
if(response.issusccessstatuscode)
{
var content=await response.content.ReadAsStringAsync();
item=JsonConvert.DeserializeObject(内容);

现在,这应该可以在click事件中使用最新的值了

你想在click方法中使用“info”?实际上我想使用
。一旦我可以将其传递到click函数,我就可以使用
项。名称
或其他什么。答案是否有帮助?是的,它确实有帮助。我做了一些尝试,让cha工作你可以接受它,因为答案会帮助别人:)