如何为嵌套类属性赋值



我尝试为以下类赋值,但不断获得未设置为对象错误实例的对象引用

public class User
{
public string Gender { get; set; }
public int Height { get; set; }
public string UserID { get; set; }
public Dress dress { get; set; }
}
public class Dress
{
public int[,] waist { get; set; }
public int[,] hips { get; set; }
public int[,] chest { get; set; }
}

我试着做:

User user = new User();
user.UserID = "name";
user.Gender = "f";
user.Height = 180;
user.dress.waist = new int[1, 1];
user.dress.hips = new int[1, 1];
user.dress.chest = new int[1, 1];

我以为我创建的数组是错误的,但即使我将user.dress.waist设置为字符串,我也会得到同样的错误。现在我所需要做的就是为User的属性赋值并写出它们。

非常感谢任何指导。

您可以通过简单地使用new来跳过创建子类的需要。

这将起作用:

public class User
{
public string Gender;
public int[,] Height;
public int[,] UserID;
public Dress Dress = new Dress();
}
public class Dress
{
public int[,] waist;
public int[,] hips;
public int[,] chest;
}

然后:

User.dress.waist = new int[1, 1];

我想你需要这样的东西。

User user = new User();
user.dress = new Dress();  //just do this to avoid that error.
user.UserID = "name";
user.Gender = "f";
user.Height = 180;
user.dress.waist = new int[1, 1];
user.dress.hips = new int[1, 1];
user.dress.chest = new int[1, 1];

我相信你可能是C#的新手。曾经有一段时间,我认为当我创建一个类的实例时,它会自动实例化main中的所有类。

不幸的是,事实并非如此。我相信有更优雅的方法可以实现这一点,但我给了你一个简单的方法来解决你的问题。

在User类中创建一个构造函数来实例化Dress属性,因为默认情况下,Dress属性为null。然后,您可能还会为Dress类添加一个新的构造函数来实例化其属性,这样您就可以向它们添加值。

最新更新