Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-如何从另一个方法访问一个方法中的列表? 公共部分类表单1:表单 { public void CreateList() { 列表所有项=新列表() { 新视频书(06841){Titel=“Community”,rendered=true,GenreType=Genre.喜剧片,Actor=AllPeople.ElementAt(0)}, 新有声读物(11585){Titel=“Deutsch für Dummies”,租借=false,GenreType=Genre.Educational,Author=AllPeople.ElementAt(1)}, 新的视频书(50862){Titel=“Interstellar”,Rented=false,GenreType=Genre.science虚构,Actor=AllPeople.ElementAt(2)}, 新有声读物(98065){Titel=“TheSlimShady LP”,Rented=false,GenreType=Genre.Music,Author=AllPeople.ElementAt(3)}, }; 公共表格1() { 初始化组件(); CreateList(); }_C#_List_Methods - Fatal编程技术网

C#-如何从另一个方法访问一个方法中的列表? 公共部分类表单1:表单 { public void CreateList() { 列表所有项=新列表() { 新视频书(06841){Titel=“Community”,rendered=true,GenreType=Genre.喜剧片,Actor=AllPeople.ElementAt(0)}, 新有声读物(11585){Titel=“Deutsch für Dummies”,租借=false,GenreType=Genre.Educational,Author=AllPeople.ElementAt(1)}, 新的视频书(50862){Titel=“Interstellar”,Rented=false,GenreType=Genre.science虚构,Actor=AllPeople.ElementAt(2)}, 新有声读物(98065){Titel=“TheSlimShady LP”,Rented=false,GenreType=Genre.Music,Author=AllPeople.ElementAt(3)}, }; 公共表格1() { 初始化组件(); CreateList(); }

C#-如何从另一个方法访问一个方法中的列表? 公共部分类表单1:表单 { public void CreateList() { 列表所有项=新列表() { 新视频书(06841){Titel=“Community”,rendered=true,GenreType=Genre.喜剧片,Actor=AllPeople.ElementAt(0)}, 新有声读物(11585){Titel=“Deutsch für Dummies”,租借=false,GenreType=Genre.Educational,Author=AllPeople.ElementAt(1)}, 新的视频书(50862){Titel=“Interstellar”,Rented=false,GenreType=Genre.science虚构,Actor=AllPeople.ElementAt(2)}, 新有声读物(98065){Titel=“TheSlimShady LP”,Rented=false,GenreType=Genre.Music,Author=AllPeople.ElementAt(3)}, }; 公共表格1() { 初始化组件(); CreateList(); },c#,list,methods,C#,List,Methods,在这里,我需要创建一个新方法(我从表单中获取的搜索按钮),在这里我可以访问“allitems”元素 private void searchButton\u单击(对象发送者,事件参数e) { 新列表SearchResultItems(); var a=titleTextBox.Text; //这里我无法访问allitems foreach(所有项目中的变量元素) ... } } 您可能希望在类范围而不是函数范围中定义newItems列表,以便可以在类中的任何位置访问它 我建议您阅读有关变量作用域的

在这里,我需要创建一个新方法(我从表单中获取的搜索按钮),在这里我可以访问“allitems”元素

private void searchButton\u单击(对象发送者,事件参数e)
{
新列表SearchResultItems();
var a=titleTextBox.Text;
//这里我无法访问allitems
foreach(所有项目中的变量元素)
...
}
}

您可能希望在类范围而不是函数范围中定义
newItems
列表,以便可以在类中的任何位置访问它

我建议您阅读有关变量作用域的内容,这可能是一个很好的起点

如果在Form1的类范围中定义newItems,则代码的外观如下:

    private void searchButton_Click(object sender, EventArgs e)
    {
        
        new List<IRentable> SearchResultItems();
        var a = titleTextBox.Text;

        // here I can't access to allitems

        foreach (var elem in allitems)
        ...
    }
}
公共部分类表单1:表单
{   
//请注意,此变量是在函数之外定义的,但其
//值已在CreateList()内设置,因此在创建CreateList()之前
//调用时,此变量包含null。
列出所有项目;
public void CreateList()
{
allItems=新列表()
{
新视频书(06841){Titel=“Community”,rendered=true,GenreType=Genre.喜剧片,Actor=AllPeople.ElementAt(0)},
新有声读物(11585){Titel=“Deutsch für Dummies”,租借=false,GenreType=Genre.Educational,Author=AllPeople.ElementAt(1)},
新的视频书(50862){Titel=“Interstellar”,Rented=false,GenreType=Genre.science虚构,Actor=AllPeople.ElementAt(2)},
新有声读物(98065){Titel=“TheSlimShady LP”,Rented=false,GenreType=Genre.Music,Author=AllPeople.ElementAt(3)},
};
}
公共表格1()
{
初始化组件();
CreateList();
}
私有无效搜索按钮\单击(对象发送者,事件参数e)
{
//您可以在此处访问allItems变量,因为CreateList()和
//和searchButton_Click()函数都在类范围内,
//定义变量的位置。
foreach(所有项目中的变量元素)
...
}
}

你不能。这是一个局部变量,当你离开
CreateList
时它就消失了。是否将
allItems
定义为属性而不是局部变量?
    private void searchButton_Click(object sender, EventArgs e)
    {
        
        new List<IRentable> SearchResultItems();
        var a = titleTextBox.Text;

        // here I can't access to allitems

        foreach (var elem in allitems)
        ...
    }
}
public partial class Form1 : Form
{   
    // Notice that this variable is defined outside of functions, but its 
    // value has ben set inside CreateList(), so before CreateList() is
    // called, this variable contains null.
    List<IRentable> allItems;
    
    public void CreateList()
    {
        allItems = new List<IRentable>()
        {
            new VideoBook(06841) {Titel = "Community", Rented = true, GenreType = Genre.Comedy, Actor = AllPeople.ElementAt(0)},
            new AudioBook(11585) {Titel = "Deutsch für Dummies", Rented = false, GenreType = Genre.Educational, Author = AllPeople.ElementAt(1)},
            new VideoBook(50862) {Titel = "Interstellar", Rented = false, GenreType = Genre.ScienceFiction, Actor = AllPeople.ElementAt(2)},
            new AudioBook(98065) {Titel = "The Slim Shady LP", Rented = false, GenreType = Genre.Music, Author = AllPeople.ElementAt(3) },
        };
    }
    
    public Form1()
    {
        InitializeComponent();
        CreateList();
    }

    private void searchButton_Click(object sender, EventArgs e)
    {
        // You can access allItems variable here, because both CreateList() 
        // and searchButton_Click() functions are within the class scope,
        // where the variable was defined.

        foreach (var elem in allItems)
        ...
    }
}