一个LIST类的小问题,看红色字的地方!

时间:2022-12-04 17:37:31
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace listtest
{

    public class employee
    {
               public employee(int empID)
        {
       this.empID = empID;// 这个this.empID变量没定义为什么也可以用呢!        }
        public override string ToString()
        {
            return empID.ToString();
        }
        public int empID
        {
            get;
            set;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            List<employee> emplist = new List<employee>();
            List<int> intlist = new List<int>();
            for (int i = 0; i < 5; i++)
            {
                emplist.Add(new employee(i + 100));
                intlist.Add(i * 5);
            }
            for (int i = 0; i < intlist.Count; i++)
            {
                Console.WriteLine("{0}", intlist[i].ToString());
            }
        }
    }
}

6 个解决方案

#1


这就是 
public int empID
  {
  get;
  set;
  }

#2


 public int empID
  {
  get;
  set;
  }

这里定义的字段.

#3


this.empID
是类中定义的属性:
 public int empID{get;set;}


= empID;是参数中的int empID

#4


public int empID{get; set; } 定义了属性。例如你在类里面定义了就可以在其他地方使用了

属性(property)
-充分体现了对象的封装性:不直接操作类的数据内容,而是通过访问器进行访问,即借助于get和set对属性的值进行读写;另一方面还可以对数据的访问属性进行控制(当然也可以通过对普通域加readonly关键字来实现。
-设计原则:属性封装了对域的操作。把要访问的域设为private,通过属性中的get和set操作对域进行设置或访问。
-不能把属性作为引用类型或输出参数来进行传递。
-get方法没有参数;set方法有一个隐含的参数value。除了使用了abstract修饰符的抽象属性,每个访问器的执行体中只有分号“;”外,其他的所有属性的get访问器都通过return来读取属性的值,set访问器都通过value来设置属性的值。
-采用间接方式来访问对象的属性(间接调用get、set方法):对象.属性 = 值(调用set),变量 = 对象.属性(调用get)。
-在属性的访问声明中:
只有set访问器,表明该属性是只写的。
只有get访问器,表明该属性是只读的。
既有set访问器,又有get访问器,表明该属性是可读可写的。

#5


我还以为属性只是一个方法,通过这个方法读和写成员变量,public int EmpID这里一般第一个字母用大写
  {
  get
{return this.empid;}
  set{this.empid=value;}
  },像这样一个属性里面要读和写的成员变量也是要定义的,开始要定义private int empid;上面这个类的属性是不是就等于定义了一个empid的整形成员变量呢?

#6


public int empID{get;set;}这种写法叫自动属性


和下面的代码完全等价:
        private int _empId;
        public int empId
        {
            get { return _empId; }
            set { _empId = value; }
        }


这两种代码编译后是一样的,上面只是一种简写形式。

#1


这就是 
public int empID
  {
  get;
  set;
  }

#2


 public int empID
  {
  get;
  set;
  }

这里定义的字段.

#3


this.empID
是类中定义的属性:
 public int empID{get;set;}


= empID;是参数中的int empID

#4


public int empID{get; set; } 定义了属性。例如你在类里面定义了就可以在其他地方使用了

属性(property)
-充分体现了对象的封装性:不直接操作类的数据内容,而是通过访问器进行访问,即借助于get和set对属性的值进行读写;另一方面还可以对数据的访问属性进行控制(当然也可以通过对普通域加readonly关键字来实现。
-设计原则:属性封装了对域的操作。把要访问的域设为private,通过属性中的get和set操作对域进行设置或访问。
-不能把属性作为引用类型或输出参数来进行传递。
-get方法没有参数;set方法有一个隐含的参数value。除了使用了abstract修饰符的抽象属性,每个访问器的执行体中只有分号“;”外,其他的所有属性的get访问器都通过return来读取属性的值,set访问器都通过value来设置属性的值。
-采用间接方式来访问对象的属性(间接调用get、set方法):对象.属性 = 值(调用set),变量 = 对象.属性(调用get)。
-在属性的访问声明中:
只有set访问器,表明该属性是只写的。
只有get访问器,表明该属性是只读的。
既有set访问器,又有get访问器,表明该属性是可读可写的。

#5


我还以为属性只是一个方法,通过这个方法读和写成员变量,public int EmpID这里一般第一个字母用大写
  {
  get
{return this.empid;}
  set{this.empid=value;}
  },像这样一个属性里面要读和写的成员变量也是要定义的,开始要定义private int empid;上面这个类的属性是不是就等于定义了一个empid的整形成员变量呢?

#6


public int empID{get;set;}这种写法叫自动属性


和下面的代码完全等价:
        private int _empId;
        public int empId
        {
            get { return _empId; }
            set { _empId = value; }
        }


这两种代码编译后是一样的,上面只是一种简写形式。