在C#中假设以下代码。
public class Class1
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class Class2
{
public int Age{ get; set; }
public int Dob{ get; set; }
}
使用上面的代码,我可以访问Class1
和Class2
的属性而不会出现问题。但是,如果我做了类似的事情。
public class Class1
{
public string FirstName { get; set; }
public string LastName { get; set; }
public class Class2
{
public int Age{ get; set; }
public int Dob{ get; set; }
}
}
我无法访问Class2
的属性,但编译时没有任何错误。有人能解释一下为什么会这样吗?我还处在C#的学习过程中,所以如果这是基本的话,我会道歉。
更多信息
如果我想从DB获取值,请使用以下代码。
public static int Age()
{
using (SqlConnection connection = new SqlConnection(ConnectionString))
{
string userName = HttpContext.Current.User.Identity.Name;
Class2 info = new Class2();
using (SqlCommand cmd = new SqlCommand("SELECT Age FROM Users WHERE UserName=@userName"))
{
cmd.Parameters.AddWithValue("UserName", userName);
cmd.Connection = connection;
connection.Open();
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
info.Age= reader.GetInt32(0);
}
}
}
return info.Age;
}
}
答案 0 :(得分:1)
那是因为Class2
成为嵌套类。您可以像这样创建它:
Class1.Class2 class2 = new Class1.Class2();
然后您可以像所有正常情况一样使用他的属性:
class2.Age = 0;
class2.Dob = 0;
但我认为你想要达到的目标是拥有Class2
类型的属性:
public class Class1
{
public string FirstName { get; set; }
public string LastName { get; set; }
public Class2 Info { get; set; }
}
public class Class2
{
public int Age{ get; set; }
public int Dob{ get; set; }
}
然后你可以访问他的参数:
Class1 class1 = new Class1();
class1.Info = new Class2();
class1.Info.Age = 0;
class1.Info.Dob= 0;
答案 1 :(得分:0)
public class Class1
{
public string FirstName { get; set; }
public string LastName { get; set; }
public class Class2
{
public int Age{ get; set; }
public int Dob{ get; set; }
}
}
Class2
是internal
中的Class1
类声明,您尚未声明Class2
的实例,因此无法获取这些字段。满足你想要的东西:
public class Class1
{
public string FirstName { get; set; }
public string LastName { get; set; }
public Class2 Instance {get; set;}
public class Class2
{
public int Age{ get; set; }
public int Dob{ get; set; }
}
}
然后使用myClass1.Instance.Age