c# 属性

  • 用来读取写入或者计算私有字段
  • 不能将属性作为 ref 或 out 参数传递
  • init与set访问器类似,只是关键字不同,init适用于构造函数,或者对象初始值
  • //具有支持字段的属性,借助私有字段
    public class Time
    {
        private double seconds;
    
    //具有支持字段的属性,借助私有字段
        public double Hours
        {
            get 
            {
               return seconds/3600;
            }
            set 
            {
               seconds = value*3600;//value为关键字
            }
        }
    
    //表达式主体定义
        public double Minutes()=>seconds/60;
    
    //getset都有的表达式主体定义
        public double Day
        {
            get=>seconds/3600/24;
            set=>seconds=value*3600*24;
        }
    
    //自动实现属性
        public int Id {get;set;}
    
    //必需属性 required关键字,强制初始化
        public required string Name{ get; set; }
    
    //属性可以用访问修饰符修饰,也可static,virtual,abstract,sealed
    }
    
    

  • hidden属性:访问派生类中同名属性 
public class Employee
{
    private string name;
    public string Name
    {
        get => name;
        set => name = value;
    }
}

public class Manager : Employee
{
    private string name;

    public new string Name//使用new关键字
    {
        get => name;
        set => name = value + "abcd";
    }
}

//访问
 Manager m1 = new Manager();
 m1.Name = "John";//Manager类中 
 ((Employee)m1).Name = "Mary";//Employ类
  • override属性,访问器修饰符必须与重写的访问器一致
abstract class Shape
{
    public abstract double Area
    {
        get;
        set;
    }
}

class Square : Shape
{
    public double side;

    public Square(double s) => side = s;

    public override double Area//override关键字
    {
        get => side * side;
        set => side = System.Math.Sqrt(value);
    }
}
  •  接口属性,不能对接口使用访问器修饰符
interface IEmployee
{
    string Name
    {
        get;
        set;
    }

    int Counter
    {
        get;
    }
}

public class Employee : IEmployee
{
    public static int numberOfEmployees;

    private string name;
    public string Name  
    {
        get => name;
        set => name = value;
    }

    private int counter;
    public int Counter  
    {
        get => counter;
    }

    public Employee() => counter = ++numberOfEmployees;
}
  • 自动实现的属性
    //C#6后可以直接初始化
    public string FirstName { get; set; } = "Jane";

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值