变量C#UWP
我有两个文件。需要从一个变量到另一个变量。我将它们设置为全局文件,并在文件中进行定义和填充。但在第二个文件读取变量时,它们是空的。我怎么解决这个问题?从第一个文件中的代码:变量C#UWP
public sealed partial class NewOrder : Page
{
public string Name1;
public string Mob;
public string Adres;
public string Email;
public string telephone;
public NewOrder()
{
searchButton.Click += async delegate
{
telephone = searchtext.Text;
using (MySqlConnection connection = new MySqlConnection("...."))
{
connection.Open();
MySqlCommand createCommand = new MySqlCommand(
"SELECT * FROM customers WHERE mob LIKE N'" + telephone + "'", connection);
EncodingProvider ppp;
ppp = CodePagesEncodingProvider.Instance;
System.Text.Encoding.RegisterProvider(ppp);
MySqlDataReader reader = createCommand.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
Name1 = reader.GetString(1);
Mob = reader.GetString(2);
Adres = reader.GetString(3);
Email = reader.GetString(4);
}
}
}
}
}
}
第二个文件中的代码:
public sealed partial class Details : Page
{
public Details()
{
this.InitializeComponent();
NewOrder A = new NewOrder();
name.Text = A.Name1;
tel.Text = A.Mob;
adres.Text = A.Adres;
email.Text = A.Email;
}
}
那我所看到的。
唯一的例外是在这里:name.Text = A.Name1;
类型“System.ArgumentNullException”的异常出现在 mscorlib.ni.dll但在用户代码中没有处理
其他信息:值不能为空。
替换这个代码,
public string Name1 = string.Empty;
public string Mob = string.Empty;
public string Adres = string.Empty;
public string Email = string.Empty;
public string telephone = string.Empty;
的唯一原因。这更多的是对症状的修复,但我怀疑它是根本原因 – rene
它可能是,但我认为这是避免'System.ArgumentNullException'初始化对象的值的更好方法。使用someobj = new MyClass()将默认值赋予变量或类的对象。 –
查询不会返回任何记录。如果查询不返回任何行,则初始化避免使用null并返回默认值。所以在我的情况下,假设没有记录,然后 name.Text = A.Name1;将会像name.Text = string.Empty; 所以名称控制的文本属性将为空白无null。 –
除了配发不好的形式,阅读SQL在构造函数中,不进行初始化你单位的变量在构造函数中,不使用单独的方法来读取数据库,其以某种方式让你知道,如果读取成功,对于集合中的每一行,你将覆盖你的类变量(应该是一个列表),并且没有异常处理...
原因似乎是你没读过任何东西数据放入你的变量中,这样他们就有可能变为null。如果这是您的预期设计,那么您应该进行空值检查,因为您可能没有数据或其他问题导致reader.HasRows为假(就像您尝试读取数据库时抛出异常一样)。
if (A.Name1 != null)
{
name.Text = A.Name1;
}
将一个断点放入Name1 = reader.GetString(1);并检查Name1的值。 – mattinsalto
我希望你的查询不要返回行。您确定无论您在searchText中键入的是否在表格客户中有一行匹配mob中的值(或者如果您使用通配符多行)。 – rene
可能的重复[什么是NullReferenceException,以及如何解决它?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-doi-i-fix-it ) – rene