列表<string>即使在初始化后也为空

时间:2017-03-10 14:51:56

标签: c# android xamarin

我一直在使用Xamarin.android开发一个简单的Android应用程序一段时间,我刚刚开始使用主板开发,所以这对我来说很新,事情是我的应用程序应该是登录和注册表单。 我使用一个类来获取和组织List<T>中的数据,事情是我得到null异常这里是我的代码

这很可能是一个简单的错误,最奇怪的是,当我尝试添加其他时,它在某些时候工作,没有工作删除它然后发生这种情况

事先提前

using System;
using System.Collections.Generic;
using System.Linq;

namespace DemoAppXamarinStu {

public class Datos
{
    public static List<string> UsuarioL;//= new List<string>()
    static List<string> NombreL;//= new List<string>()
    static List<string> ApellidoL;//= new List<string>()
    static List<string> EmailL;// = new List<string>()
    public static List<string> ContraseñaL;// = new List<string>();

    public Datos()
    {
        UsuarioL = new List<string>();
        NombreL = new List<string>();
        ApellidoL = new List<string>();
        EmailL = new List<string>();
        ContraseñaL = new List<string>();

        UsuarioL.Add("admin");
        ContraseñaL.Add("admin");
        NombreL.Add("administrador");
        ApellidoL.Add("administrador");
        EmailL.Add("admin@admin.com");              
    }
    public static void agregar(string value1, string value2, string value3, string value4, string value5) 
    {
        //Datos d = new Datos();
        UsuarioL.Add(value1);
        NombreL.Add(value2);
        ApellidoL.Add(value3);
        EmailL.Add(value4);
        ContraseñaL.Add(value5);
    }
}
}
哦,还要检查一下 an exception on a comment

4 个答案:

答案 0 :(得分:2)

您正在尝试将对象添加到未实例化的列表中。您正在使用静态方法,因此未调用构造函数,因此未创建列表。

答案 1 :(得分:2)

那是因为你正在使用静态方法。

当调用静态方法时,不会调用构造函数(并且未初始化列表)。静态方法在类上调用,但构造函数在制作对象时会出现。

自己动手:在方法和构造函数上应用断点,并且会看到构造函数永远不会被击中。

要解决此问题,请像这样初始化它们(基本上取消注释您的代码,它会正常工作。)

public static List<string> FooBar = new List<string>();

答案 2 :(得分:2)

您正在从静态方法访问静态字段,并在类的构造函数中实例化列表。我不想做你想做的事。

每次实例化类时,都会重新实例化静态字段。并且您需要实例化一次类以实例化静态字段...

为什么不取消注释// new List<String>()并在构造函数中删除?

答案 3 :(得分:1)

您在agregar()方法中使用静态数据成员,并且您没有初始化所有列表。您正在初始化Datos构造函数中的所有静态数据成员。构造函数从未调用过。