C#中实体类的get、set的疑问,请大侠解答

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中实体类的get、set的疑问,请大侠解答相关的知识,希望对你有一定的参考价值。

public int Age

getreturn _age;
set_age=value;


public int Age

get;
set;

他们两个是一样的吗

单纯就这两个的对比而言,是一样的,只是“手动”和“自动”的区别。
第二个只是一种简写,实际上编译器会帮你加一个私有成员。
你可以验证一下:编译代码,然后再反编译,你就会发现结果了。

但是……
不建议第二种写法,原因:
1、灵活性
比如要对年龄验证,输入负数时抛出异常,第二种没办法。
2、效率
如果有构造函数,参数是年龄。第一种你可以对私有成员赋值、第二种只能对属性赋值,效率上是第一种高。

另外,这两种写法在“封装”上是没什么区别的!
参考技术A 效果是一样的!但是实际应用有区别。
第一种写法比较灵活,_age 为私有成员,而对其的封装Age成为属性。通过属性来保护私有成员,可以做到对成员的访问控制,比如:
只读:
public int Age

getreturn _age;

只写
public int Age

set_age=value;

读写
public int Age

getreturn _age;
set_age=value;

_age作为私有成员在类的内部可以任意的操作,这体现的封装的好处,而外部只能通过Age这个属性来访问。
参考技术B 是的,简单的说,前者是用于自定义的获取或设置Age的值,如果不做特殊定制,就是一样的 参考技术C 一样的,后一种是简写形式的。 参考技术D 后一种写法是C# 3.0中的自动属性,也就是说如果没有其它的逻辑判断(比如对赋值进行判定等等操作),仅仅只是简单的赋值和取值 ,那就可以用后面那种简单的写法,反之仍然还要用上一种。

C#实体类的关联运用

定义学生类(student):

class student
{
public string stu_id { get; set; }
public string stu_name { get; set; }
public int stu_age { get; set; }
public string stu_pwd { get; set; }
public classes cls { get; set; }
public stu_cj cj { get; set; }
}

定义班级类classes:

class classes
{
public string cls_id { get; set; }
public string cls_name { get; set; }
}

定义学生成绩类stu_cj:

class stu_cj
{
public string stu_id { get; set; }
public int cj_yw { get; set; }
public int cj_sx { get; set; }
public int cj_yy { get; set; }
}

 

在保存数据时:

student stud = new student();

stud.stu_name = dr["stu_name"].ToString();//直接保存


classes cls = new classes();                    //需要将其实例化
cls.cls_name = dr["cls_name"].ToString();// 保存
stud.cls = cls;         //在将其保存在学生类里面


stu_cj cj = new stu_cj();
cj.cj_yw = int.Parse(dr["yuwen"].ToString());
cj.cj_sx = int.Parse(dr["shuxue"].ToString());
cj.cj_yy = int.Parse(dr["yingyu"].ToString());
stud.cj = cj;

 

读取的时候则可以直接读取:

label1.Text = stu.stu_name;
label2.Text = stu.cls.cls_name;
label3.Text = stu.cj.cj_yw.ToString();
label4.Text = stu.cj.cj_sx.ToString();
label5.Text = stu.cj.cj_sx.ToString();

 

以上是关于C#中实体类的get、set的疑问,请大侠解答的主要内容,如果未能解决你的问题,请参考以下文章

C#获取实体类属性名和值

AutoMapper C#实体映射

C#对实体进行JSON序列化时枚举的处理

C#中用VS2010怎么生成数据实体类

实体实体集及其运用

java实体类里面怎么用快捷方式生成get,set函数