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

 更新时间:2024年09月11日 08:52:49   作者:翀翀翀  
属性是C#中的一种特殊成员,它允许外部以受控方式访问类的状态,属性通过get和set方法实现对类私有字段的读取和修改,本文给大家介绍C#属性get和set使用,感兴趣的朋友一起看看吧

什么是属性?

属性在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使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • c#递归生成XML实例

    c#递归生成XML实例

    这篇文章主要介绍了c#递归生成XML的方法,以实例形式较为详细的介绍了C#的递归算法与XML操作技巧,非常具有实用价值,需要的朋友可以参考下
    2014-11-11
  • 支持多类型数据库的c#数据库模型示例

    支持多类型数据库的c#数据库模型示例

    本文为大家提供一个c#数据库访问模型,支持多类型数据库,简单抽取数据库访问函数,大家参考使用吧
    2014-01-01
  • C#调用FFmpeg操作音视频的实现示例

    C#调用FFmpeg操作音视频的实现示例

    本文主要介绍了C#调用FFmpeg操作音视频的实现示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • c# Rank属性与GetUpperBound方法的深入分析

    c# Rank属性与GetUpperBound方法的深入分析

    本篇文章是对c#中的Rank属性与GetUpperBound方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • C#生成图表的五种终极方案和避坑指南

    C#生成图表的五种终极方案和避坑指南

    在现代应用程序中,数据可视化是一个重要的功能,它可以帮助用户更直观地理解数据,在C# WPF(Windows Presentation Foundation)中,有多种方式可以生成图表,以下是五种常见的方法,每种方法都有其独特的优势和局限,需要的朋友可以参考下
    2025-09-09
  • C# AutoMapper 使用方法总结

    C# AutoMapper 使用方法总结

    这篇文章主要介绍了C# AutoMapper 使用方法,文中讲解非常细致,代码帮助大家更好的理解学习,感兴趣的朋友可以了解下
    2020-06-06
  • 区分C# 中的 Struct 和 Class

    区分C# 中的 Struct 和 Class

    这篇文章主要介绍了如何区分C# 中的 Struct 和 Class,帮助大家更好的理解和学习c#编程,感兴趣的朋友可以了解下
    2020-09-09
  • C#中的枚举和结构体用法解读

    C#中的枚举和结构体用法解读

    这篇文章主要介绍了C#中的枚举和结构体用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-08-08
  • C#读写INI配置文件的技术方案与实践指南

    C#读写INI配置文件的技术方案与实践指南

    INI(Initialization)文件作为一种经典的配置文件格式,凭借其结构简单、可读性强、易于人工编辑的特点,在 Windows 开发生态中拥有长久的生命力,下面我们就来系统阐述一下在 C# 中进行 INI 文件读写操作的核心知识吧
    2026-05-05
  • C#实现GZip压缩和解压缩入门实例

    C#实现GZip压缩和解压缩入门实例

    C#中用GZip对数据压缩和解压缩非常方便,但是当我第一次拿到这个类的时候却感觉很迷茫,无从下手
    2014-04-04

最新评论