C#中修改私有字段的几种方法

 更新时间:2026年01月04日 10:57:32   作者:nice-lake-moster  
本文主要介绍了C#中修改私有字段的方法,包括添加公共属性、Set和Get方法、通过构造函数设置以及完整实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

比如创建一个公有类为Private,并且创建私有变量ID

class Private
{
    private string ID;
}

在C#中,由于ID字段是private的,不能直接从类外部访问或修改。

以下是几种修改ID值的方法:

方法1:添加公共属性(推荐)

这是最标准和面向对象的方法:

class Private
{
    private string ID;

    // 添加公共属性来访问和修改ID
    public string StudentID
    {
        get { return ID; }
        set { ID = value; }
    }
}

class Program
{
    static void Main()
    {
        Private obj = new Private();
        
        // 通过属性修改ID
        obj.StudentID = "S12345";
        Console.WriteLine($"ID值: {obj.StudentID}");
    }
}

方法2:添加Set和Get方法

使用传统的方法来修改私有字段:

class Private
{
    private string ID;

    // 设置ID的方法
    public void SetID(string newID)
    {
        ID = newID;
    }
    
    // 获取ID的方法
    public string GetID()
    {
        return ID;
    }
}

class Program
{
    static void Main()
    {
        Private obj = new Private();
        
        // 通过方法修改ID
        obj.SetID("S12345");
        Console.WriteLine($"ID值: {obj.GetID()}");
    }
}

方法3:通过构造函数设置

在创建对象时初始化ID:

class Private
{
    private string ID;

    // 默认构造函数
    public Private() { }
    
    // 带参数的构造函数
    public Private(string id)
    {
        ID = id;
    }
    
    // 获取ID的属性
    public string StudentID => ID;

}

class Program
{
    static void Main()
    {
        // 创建对象时设置ID
        Private obj = new Private("S12345");
        Console.WriteLine($"ID值: {obj.StudentID}");
        
        // 或者先创建对象,再通过其他方法修改
        Private obj2 = new Private();
        // 这里需要添加其他修改方法...
    }
}
这个时候可能有人就会问了,下面这一行代码什么意思?

public string StudentID => ID;

其实相当于以下代码

public string StudentID
{
    get
    {
        return ID;
    }
}
它用于简化只包含一个返回语句的属性get访问器的写法。

这两种写法是等价的。箭头 => 表示这个属性只包含一个getter,并且直接返回后面的表达式(即ID)的值。

方法4:完整实现(最佳实践)

结合以上方法,提供完整的访问控制:

class Private
{
    private string id;  // 使用小写命名私有字段

    // 构造函数
    public Private() { }
    
    public Private(string id)
    {
        this.id = id;
    }

    // ID属性 - 带有验证逻辑
    public string ID
    {
        get { return id; }
        set 
        { 
            if (!string.IsNullOrWhiteSpace(value))
                id = value;
            else
                throw new ArgumentException("ID不能为空");
        }
    }
    
    // 验证ID是否有效
    public bool IsValidID()
    {
        return !string.IsNullOrEmpty(id);
    }
    
    // 重写ToString方法以便于显示
    public override string ToString()
    {
        return $"Private(ID: {id})";
    }
}

class Program
{
    static void Main()
    {
        try
        {
            // 方式1:通过构造函数
            Private obj1 = new Private("S1001");
            Console.WriteLine(obj1);
            
            // 方式2:通过属性修改
            Private obj2 = new Private();
            obj2.ID = "S1002";
            Console.WriteLine(obj2);
            
            // 测试验证逻辑
            Console.WriteLine($"ID是否有效: {obj2.IsValidID()}");
            
            // 这会抛出异常
            // obj2.ID = "";
        }
        catch (Exception ex)
        {
            Console.WriteLine($"错误: {ex.Message}");
        }
    }
}

总结

对于C#新手,我推荐使用方法1方法4

  • 方法1 最简单直接,适合快速实现
  • 方法4 最完整,包含验证逻辑,符合最佳实践

记住面向对象编程的重要原则:封装。私有字段应该通过公共属性或方法来访问和修改,这样可以控制数据的有效性和一致性。

到此这篇关于C#中修改私有字段的方法的文章就介绍到这了,更多相关C# 修改私有字段内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • c#实现字符串反序输出字符串的实例

    c#实现字符串反序输出字符串的实例

    下面小编就为大家分享一篇c#实现字符串反序输出字符串的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • c#冒泡排序算法示例

    c#冒泡排序算法示例

    这篇文章主要介绍了c#冒泡排序算法示例,需要的朋友可以参考下
    2014-04-04
  • C#设置PDF表单不可编辑以及提取表单数据的操作

    C#设置PDF表单不可编辑以及提取表单数据的操作

    PDF表单是PDF中的可编辑区域,允许用户填写指定信息,当表单填写完成后,有时候我们可能需要将其设置为不可编辑,以保护表单内容的完整性和可靠性,本文将给大家介绍C#设置PDF表单不可编辑以及提取表单数据的操作,需要的朋友可以参考下
    2024-06-06
  • 浅谈Async和Await如何简化异步编程(几个实例让你彻底明白)

    浅谈Async和Await如何简化异步编程(几个实例让你彻底明白)

    本篇文章主要介绍了浅谈Async和Await如何简化异步编程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • C#中Json反序列化的实现方法

    C#中Json反序列化的实现方法

    这篇文章主要给大家介绍了关于C#中Json反序列化的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-06-06
  • c#使用wmi查询usb设备信息示例

    c#使用wmi查询usb设备信息示例

    这篇文章主要介绍了c#使用wmi查询usb设备信息示例,大家参考使用吧
    2014-01-01
  • c#调用c++的DLL的实现方法

    c#调用c++的DLL的实现方法

    本文主要介绍了c#调用c++的DLL的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • C#条码生成类分享

    C#条码生成类分享

    这篇文章主要分享了C#条码生成类的实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • C#执行外部命令的方法

    C#执行外部命令的方法

    这篇文章主要介绍了C#执行外部命令的方法,实例分析了C#调用CMD.exe程序执行外部命令的技巧,需要的朋友可以参考下
    2015-06-06
  • C# 打印网页不显示页眉页脚的实现方法

    C# 打印网页不显示页眉页脚的实现方法

    这篇文章主要介绍了C# 打印网页不显示页眉页脚的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01

最新评论