如果使用构造函数初始化类对象,则只能通过成员方法直接访问成员变量(objectname.variablename)。
和
如果使用get; set;初始化类对象;那么成员变量只能通过get; set;来访问。属性。
这些陈述是真的吗?或者我在这里遗漏了什么?
以下是代码的代码和输出。
using System;
public class emp {
private int empId = -1;
private string empName = string.Empty;
public int PEmpId {
set;
get;
}
public string PEmpName {
set;
get;
}
public emp(int i, string str) {
empId = i;
empName = str;
}
public void empDis(emp e) {
Console.WriteLine("Id =>{0}<=, Nm =>{1}<=", e.empId, e.empName);
Console.WriteLine("Id =>{0}<=, Nm =>{1}<=", e.PEmpId, e.PEmpName);
}
public emp() {}
}
public class empUsage {
public void Main() {
emp e = new emp(1, "R");
e.empDis(e);
emp e1 = new emp();
e1.PEmpId = 1;
e1.PEmpName = "W";
e1.empDis(e1);
}
}
输出:
Id =>1<=, Nm =>R<= Id =>0<=, Nm =><= Id =>-1<=, Nm =><= Id =>1<=, Nm =>W<=
答案 0 :(得分:4)
这些陈述是无稽之谈。成员的初始化方式与访问方式之间没有关系。
emp
类包含成员变量和属性。如果初始化成员变量,则可以从成员变量中获取值。如果初始化属性,则可以从属性中获取值。
获取参数的构造函数使用这些值初始化成员变量。这意味着您在成员变量中有值,因此您可以使用它们。但是,如果您愿意,它也不会使您初始化属性并使用它们。
答案 1 :(得分:1)
是的,但是您的get / set实现已关闭:
public int PEmpId {
set { empId = value; }
get { return empId; }
}
public string PEmpName {
set { empName = value; }
get { return empName; }
}
除非您想要&#34;自动(或隐式)属性&#34;,否则您不需要empId
或empName
字段。
答案 2 :(得分:0)
如果使用构造函数然后使用成员初始化类对象 变量只能直接访问(objectname.variablename) 通过会员方法。
如果使用get; set;初始化类对象;然后是会员 变量只能通过get; set;来访问。属性。
这两种说法都是不真实的。成员初始化的方式与您访问它们的方式没有直接关系。在讨论直接引用成员时,后者由访问修饰符(private
,public
等)指定。如果您将字段设为公共字段,则可以使用您的类直接访问它们,无论它们如何实例化。另一方面,如果您将它们设为私有,那么只有类内部的代码才能访问它们,这取决于您如何实现此访问。您可以公开getter和/或setter,创建一个可以更改其值的方法,或者两者都是(或者没有)。无论初始化方式如何,所有这些选项都是可能的。
答案 3 :(得分:0)
这些陈述是真的吗?
没有
我在这里错过了什么吗?
是。在我看来,你不明白
public
,private
等