C#的属性,方法的类型

最近学习C#时,对于属性与方法之间有些模棱两可,所以这次总结关于这方面的内容,以便于与我有同方面不清楚的人提供帮助,也是便于以后查看!!

属性

在面向对象的编码中,属性一般表示对象的”’静态特征”’
属性一般采用Pascal命名法,数据类型和字段对应一致(首字母大写)
属性是访问一个私有字段的入口
一般字段设置为private 属性为public

属性的特效

  1. 使用属性能避免非法数据 在get set中可以添加数据逻辑
  2. 属性是保证数据有效性的最后一个“”屏障“”,属性比字段更具有数据安全性
public int age;
public int Age{
    get{return age}
    if(age<18)//屏障的运用
    age=18;
    else
    age=value;
}

可以设置只读属性

  1. 有时候为了数据安全性,设置只读,而不能赋值
    将set方法去掉

属性可以单独存在

1,有时候属性并不返回一个私有字段的值,而是调用一些方法

private Date Time birthday;
public Date Time Birthday{
    get{return birthday;}
}
    //无私有字段
    public int Age{//只读 无返回值
    get {return Date time.Now.Year-birthday.Year;}
}
}

自动属性

  1. 属性值对应私有字段时,可以调用
    private Date Time birthday;
    public Date Time Birthday{
        get{return birthday;}
        set{birthday=value;}
        }
        //可以等于为
        public Date Time Birthday{
        get;
        set;
        }
  • 用字段编译器自动生成
  • 只适合标准属性
  • 属性内部不能有业务逻辑
  • 不能修改只读只写
  • 不能直接操作私有字段

字段

  • 字段一般由类的内部使用,交换数据,使用private
  • 可以给字段赋值,取值
  • 当字段需要对外界提供数据的时候,将字段封装成属性,最好不改变为共有字段

方法

实例方法

编写方法考虑因素

  • 根据项目了解要完成的具体要求
  • 确定方法的课访问性,默认private
  • 调用方法产生的结果是什么
  • 方法名字,一般容易明白什么意思,采用动名词
  • 调用方法需要什么条件(什么参数)
  • 一般方法参数不能超过4个
  • 参数过多会导致:编写,调用,扩张困难,可以调用实体类
  • 只能显示对象名.方法
  • 一个雷中可以没有任何实体类

方法定义规范

  • 访问修饰符 返回类型 方法名称(需要达到的条件,参数){方法具体完成的功能}
public string GetBook/*方法名*/(string barCode,string bookName)/*参数,条件*/{
    return string.Format("图书条码:{0},图书名称:{1}",barCode,bookName);//返回数值
}

静态方法

  • static 修饰
  • 直接通过类.方法调用,不像构造方法需要new一个对象才能进行调用
  • 静态方法在程序开始就存在直到程序结束,所以少用静态方法,不受GC管理

构造方法

  • 构造方法只能通过new来调用
  • 在没有构造方法时,系统会强制加入一个构造方法
  • 构造方法没有返回值,且必须与类名一致,与实例方法不同
 Class Book{
 Book bookCode=new Book; /*new Book为一个特殊方法*/
 } 

###对象初始化强制性###
- 完成对对象的初始化(带有参数)
- 传递参数

多个构造方法的调用问题

  • 使用:this.参数名方式
  • 避免代码重复
//public BookName{get;set;}自动属性这里省略
public Book(int bookCode,string bookName){
    this.BarCode=barCode;
    this.BookName=bookName;
}
public Book(int bookCode,string bookName,string Auther)
:this(barCode,bookName)//调用上部分的两个参数
{
this.Auther=Auther;
}

对象初始化器

  • 简化属性的初始化,属性之间用逗号分隔
  • 对于顺序没有要求
  • 可以随意初始几个值
  • 用到属性初始化时,且不需要构造方法时可以使用对象初始化
  • 只能完成属性初始化
  • 无需提前定义,构造方法必须在类里面先定义参数完成
Book booK=new Book()/*无参数*/{
    BarCode=1001,
    BookName="C#的属性,方法的类型"
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值