中国缺普京 發表於 2026-1-4 10:57:32

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

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li>比如创建一个公有类为Private,并且创建私有变量ID</li><li>方法1:添加公共属性(推荐)</li><li>方法2:添加Set和Get方法</li><li>方法3:通过构造函数设置</li><li>方法4:完整实现(最佳实践)</li><li>总结</li></ul></div><p class="maodian"></p><h2>比如创建一个公有类为Private,并且创建私有变量ID</h2>
<div class="jb51code"><pre class="brush:csharp;">class Private
{
    private string ID;
}
</pre></div>
<p>在C#中,由于ID字段是private的,不能直接从类外部访问或修改。</p>
<p>以下是几种修改ID值的方法:</p>
<p class="maodian"></p><h2>方法1:添加公共属性(推荐)</h2>
<p>这是最标准和面向对象的方法:</p>
<div class="jb51code"><pre class="brush:csharp;">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}");
    }
}</pre></div>
<p class="maodian"></p><h2>方法2:添加Set和Get方法</h2>
<p>使用传统的方法来修改私有字段:</p>
<div class="jb51code"><pre class="brush:csharp;">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()}");
    }
}</pre></div>
<p class="maodian"></p><h2>方法3:通过构造函数设置</h2>
<p>在创建对象时初始化ID:</p>
<div class="jb51code"><pre class="brush:csharp;">class Private
{
    private string ID;

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

}

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

public string StudentID =&gt; ID;

其实相当于以下代码

public string StudentID
{
    get
    {
      return ID;
    }
}
它用于简化只包含一个返回语句的属性get访问器的写法。</pre></div>
<p><span>这两种写法是等价的。箭头&nbsp;<code>=&gt;</code>&nbsp;表示这个属性只包含一个getter,并且直接返回后面的表达式(即<code>ID</code>)的值。</span></p>
<p class="maodian"></p><h2>方法4:完整实现(最佳实践)</h2>
<p>结合以上方法,提供完整的访问控制:</p>
<div class="jb51code"><pre class="brush:csharp;">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}");
      }
    }
}</pre></div>
<p class="maodian"></p><h2>总结</h2>
<p>对于C#新手,我推荐使用<strong>方法1</strong>或<strong>方法4</strong>:</p>
<ul><li><strong>方法1</strong>&nbsp;最简单直接,适合快速实现</li><li><strong>方法4</strong>&nbsp;最完整,包含验证逻辑,符合最佳实践</li></ul>
<p>记住面向对象编程的重要原则:<strong>封装</strong>。私有字段应该通过公共属性或方法来访问和修改,这样可以控制数据的有效性和一致性。</p>
<p>到此这篇关于C#中修改私有字段的方法的文章就介绍到这了,更多相关C# 修改私有字段内容请搜索琼殿技术社区以前的文章或继续浏览下面的相关文章希望大家以后多多支持琼殿技术社区!</p>
                           
                            <div class="art_xg">
                              <b>您可能感兴趣的文章:</b><ul><li>C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)</li><li>C#访问及调用类中私有成员与方法示例代码</li><li>解析C#中的私有构造函数和静态构造函数</li><li>C#中私有构造函数的特点和用途实例解析</li><li>C#私有构造函数使用示例</li></ul>
                            </div>

                        </div>
                        <!--endmain-->
頁: [1]
查看完整版本: C#中修改私有字段的几种方法