美文网首页
30.C# 类基础字段与属性

30.C# 类基础字段与属性

作者: 技术老小子 | 来源:发表于2024-03-05 06:12 被阅读0次

    摘要


    C#是一种强大的面向对象编程语言,它支持多种数据类型,其中包括字段和属性。字段和属性都是一个类的数据项成员,它们用于存储类的状态信息。

    在C#中,字段是一个类的实例变量,它用于存储类的状态信息。每个字段都有一个名称和一个类型,它可以被其他类访问和修改。例如,在一个Person类中,可以定义一个Name字段来存储人的名字。

    与字段不同,属性是一个类的虚拟成员,它可以提供一种更灵活的方式来访问和修改类的状态信息。属性是一个值或对象的方法,它允许我们以一种简单而安全的方式访问类的状态。例如,在Person类中,可以定义一个Name属性来访问和修改人的名字。

    相比字段,属性有一些显著的优点。首先,属性可以自动调用setter和getter方法来设置和获取类的状态。这可以使代码更加简洁和易于维护。其次,属性可以隐藏实现细节,使代码更加安全和易于扩展。例如,如果需要修改类的状态,可以在setter方法中添加验证逻辑,从而确保输入的数据是合法的。

    正文


    类定义的具体语法形式如下。

    internal class Material
    {
    
    }
    
    

    internal 类的访问修饰符 class 修饰符 Material类名

    字段

    在项目中创建一个Material 类

    public class Material
    {
        private string name;//字段
        private int qty;//字段
    }
    
    
    class Program
    {
        static int i;
        static void Main(string[] args)
        {
            Console.WriteLine(i);
        }
    }
    
    

    这一段可以看到在类级别的变量的i给了一个默认值0

    image.png
    class Program
    {
        static void Main(string[] args)
        {
            int i;
            Console.WriteLine(i);
        }
    }
    
    

    在方法中的变量C#不会给默认值 ,所以这段会出错。

    public class Material
    {
        private string name;//字段
        public int qty;//字段
    }
    
    
    static void Main(string[] args)
    {
        Material material = new Material();
        material.name = "6ES7";//由于在类中是private,所以不能有访问
        material.qty = 100;//public 就可以
    }
    
    

    属性是什么?

    属性是对现实实体特征的抽象,提供对类或对象的访问。

    public class Material
    {
        private string name;//字段
    
        //定义了一个Qty的属性
        private int _qty = 0;
        public int qty
        {
            get
            {
                return _qty;
            }
            set
            {
                if(value<0 || value > 100)
                {
                    throw new ArgumentException("数量不在范围内!");
                }
                _qty = value;
            }
        }
        //简单定义
        public string location { get; set; }
    
    }
    
    

    其中get是读,set是写,也可以申明只读,只写的属性

    static void Main(string[] args)
    {
        Material material = new Material();
        material.qty = 101;//由于qty>100,会出现异常
    }
    
    
    image.png
    • 属性可以将字段与属性绑定在一起
    • 可以避免非法数据访问
    • 保证数据的完整性

    字段与属性区别

    • 字段一般用在类的内部使用,属性一般供外部类访问
    • 属性相当于是给字段加了一个保护套,为字段加了两套方法
    • 字段的使用场景:与类或者对象关系密切,建议使用private修饰,一般可以用_开头命名。
    • 属性的使用场景:对字段进行封装,提供get/set关键字,进行访问。

    相关文章

      网友评论

          本文标题:30.C# 类基础字段与属性

          本文链接:https://www.haomeiwen.com/subject/mzdkzdtx.html