比如创建一个公有类为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# 修改私有字段内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论