当前位置: 代码网 > it编程>编程语言>C# > C#属性get和set使用示例详解

C#属性get和set使用示例详解

2024年11月03日 C# 我要评论
什么是属性?属性在c#中是一种特殊的成员,它提供了对类内部私有字段的安全访问方式。通过属性,您可以对外部代码隐藏类的内部实现细节,同时仍然允许外界以一种受控的方式访问和修改类的状态。属性看起来像是公共

什么是属性?

属性在c#中是一种特殊的成员,它提供了对类内部私有字段的安全访问方式。通过属性,您可以对外部代码隐藏类的内部实现细节,同时仍然允许外界以一种受控的方式访问和修改类的状态。属性看起来像是公共字段,但实际上它们是由类提供的方法来读取(get)和/或写入(set)私有字段。

属性的语法

属性由访问修饰符、类型声明、属性名称、以及可选的访问器(accessors)组成。以下是基本语法:

[accessmodifier] type propertyname
{
    get { ... }
    set { ... }
}
  • accessmodifier 是访问修饰符,如 publicprivateprotected 等。
  • type 是属性的类型。
  • propertyname 是属性的名字。
  • get 和 set 是访问器,分别用于读取和写入属性的值。

创建和使用手动实现的属性

手动实现的属性允许您完全控制 get 和 set 方法的行为。例如:

public class person
{
    private string _name;
    public string name
    {
        get
        {
            return _name;
        }
        set
        {
            if (string.isnullorempty(value))
            {
                throw new argumentexception("name cannot be null or empty.");
            }
            _name = value;
        }
    }
}

在这个例子中,name 属性的 set 方法会检查传入的值是否为空或空字符串。如果是,则抛出一个 argumentexception 异常。这确保了 _name 字段不会被设置成无效的值。

自动实现的属性

自动实现的属性是c# 3.0引入的新特性,它简化了属性的定义。当你声明一个自动实现的属性时,编译器会自动生成一个私有的支持字段以及默认的 get 和 set 方法:

public class person
{
    public string name { get; set; }
}

这里,name 属性没有任何额外的逻辑,只是简单地提供了一个读/写接口。编译器会在幕后创建一个私有字段来存储 name 的值。

属性的访问修饰符

属性可以有不同的访问级别。例如,可以将一个属性设为只读:

public class person
{
    public string name { get; private set; }
}

上面的代码定义了一个只能通过 set 方法内部访问的 name 属性。这意味着只有类的构造函数或其他类的方法可以设置名字,而外部代码只能读取它。

如何使用属性

一旦定义了属性,就可以像使用公共字段一样在类的外部访问它:

class program
{
    static void main()
    {
        person person = new person();
        person.name = "李四";
        console.writeline(person.name);
    }
}

当您在使用属性时,可以添加更多的逻辑到 get 或 set 访问器中,比如执行计算、数据验证、调用其他方法等。这样可以让您的类更加健壮,同时保持良好的封装性。

到此这篇关于c#属性 get和set如何使用的文章就介绍到这了,更多相关c# get和set使用内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com