c# - 为什么甚至可以更改私有(private)成员,或者使用反射在 C# 中运行私有(private)方法?

标签 c# .net reflection

<分区>

我最近遇到了一个我在使用 C# 时遇到的问题,通过使用 reflection 设置私有(private)成员解决了这个问题.

我惊讶地发现设置私有(private)成员/字段并运行私有(private)方法是 C# 中允许和可能的事情。这不是如何做这些事情的问题,它们有据可查,我的问题是:为什么?

如果将字段/成员/方法设置为私有(private)/内部,为什么 C# 作为一种语言允许在范围之外设置这些字段?我认为这会引发某种异常。如果类希望更改或设置它们,难道不会有方法或构造函数吗?

最佳答案

因为访问修饰符可以帮助记录您希望向消费者或继承者等公开的 API。

它们不是安全/访问控制机制。

关于c# - 为什么甚至可以更改私有(private)成员,或者使用反射在 C# 中运行私有(private)方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16942114/

相关文章:

.net - 如何在纯 .net 中使 .NET 公共(public)语言运行时 (CLR) 崩溃

c# - 从扩展方法中获取原始变量名

c# - 命名空间 'System.Web'中不存在HttpBrowserCapabilitiesBase

c# - fiddler /C# : search content of request/response for special phrases

c# - 使用 LibGit2Sharp 暂存未跟踪文件时,Commands.Stage() 不会增加 Staged.Count

c# - MDI 父项上的垂直滚动条不会逐渐滚动

.net - 无法序列化作为 DataSet 一部分的 DataTable

java - 如何获取构造函数lambda的返回类型

asp.net-mvc - HTMLHelper,在属性外生成 "Expression<Func<TModel, TValue>> expression"类型的参数

时间:2019-03-08 标签:c#interopmarshallinganddisposing