Field is never assigned to, and will always have its default value null (CS0649)
c#
Solution
You have not initialized your lists anywhere.
Try initializing them where they are declared:
private System.Collections.Generic.List<string> championsList = new System.Collections.Generic.List<string>();
private System.Collections.Generic.List<string> rolesList = new System.Collections.Generic.List<string>();
Or within the constructor:
private System.Collections.Generic.List<string> championsList;
private System.Collections.Generic.List<string> rolesList;
public MainForm()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
// loadList uses these lists so they should be initialized before the call to loadList to avoid a NullReferenceException.
championsList = new System.Collections.Generic.List<string>();
rolesList = new System.Collections.Generic.List<string>();
loadList(listFile);
}
Or lazily at the time they are needed:
private System.Collections.Generic.List<string> championsList;
private System.Collections.Generic.List<string> rolesList;
public void loadList(string file){
if (championsList == null) championsList = new System.Collections.Generic.List<string>();
if (rolesList == null) rolesList = new System.Collections.Generic.List<string>();
try {
using (StreamReader r = new StreamReader(file))
{
...
}
} catch (Exception) {
}
}
void Btn_DownloadClick(object sender, EventArgs e)
{
WebClient webClient = new WebClient();
if (championsList == null) championsList = new System.Collections.Generic.List<string>();
if (rolesList == null) rolesList = new System.Collections.Generic.List<string>();
progressBar.Maximum = championsList.Count * rolesList.Count;
int count = 0;
progressBar.Value = 0;
string fileName = "";
string url = "";
string path = "";
foreach (string c in championsList)
{
foreach (string r in rolesList)
{
...
}
}
progressBar.Value = progressBar.Maximum;
MessageBox.Show("Download completed!\n" + count.ToString() + " item lists successfully downloaded.");
}
P.S. because you already have `using System.Collections.Generic` declared, you could write it more simply as:
private List<string> championsList = new List<string>();
private List<string> rolesList = new List<string>();
Problem
I've been searching for answers everywhere and I can't seem to solve mine. Anyone know a solution for this? I'm getting the following errors: Line 25: Field 'Champion_Item_List_Downloader.MainForm.championsList' is never assigned to, and will always have its default value null (CS0649) Line 26: Field 'Champion_Item_List_Downloader.MainForm.rolesList' is never assigned to, and will always have its default value null (CS0649) ``` using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using System.IO; using System.Net; using System.ComponentModel; namespace Champion_Item_List_Downloader { /// <summary> /// Description of MainForm. /// </summary> public partial class MainForm : Form { const string listFile = "Lists.txt"; private System.Collections.Generic.List<string> championsList; private System.Collections.Generic.List<string> rolesList; public MainForm() { // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent(); loadList(listFile); } public void loadList(string file){ try { using (StreamReader r = new StreamReader(file)) { string line; bool isChamp = false; while ((line = r.ReadLine()) != null) { if (line == @"[Champions]") { isChamp = true; } if(line != @"[Champions]" && line != @"[Types]" && line != "") { if(isChamp == true){ championsList.Add(line); } else { rolesList.Add(line); } } } } } catch (Exception) { } } public void loadStringList(string file, List<string> list){ try { using (StreamReader r = new StreamReader(file)) { string line; while ((line = r.ReadLine()) != null) { list.Add(line); } } } catch (Exception) { } } void Btn_DownloadClick(object sender, EventArgs e) { WebClient webClient = new WebClient(); progressBar.Maximum = championsList.Count * rolesList.Count; int count = 0; progressBar.Value = 0; string fileName = ""; string url = ""; string path = ""; foreach (string c in championsList) { foreach (string r in rolesList) { try { fileName = c + @"_" + r + @"_scrape.json"; url = @"http://www.lolflavor.com/champions/" + c + @"/Recommended/" + fileName; path = @"Champions\" + c + @"\Recommended\"; Directory.CreateDirectory(path); webClient.DownloadFile(new Uri(url), path + fileName); count++; progressBar.Value = count; } catch (Exception) { } } } progressBar.Value = progressBar.Maximum; MessageBox.Show("Download completed!\n" + count.ToString() + " item lists successfully downloaded."); } void MainFormLoad(object sender, System.EventArgs e) { throw new NotImplementedException(); } } } ```