防止更改 String.Empty 的值

2024-01-07

部分是出于好奇的破坏事物的角度,部分是出于防范潜在问题的目的。想象一下通过调用以下内容(或类似的内容,但是string.Empty是一个很好的例子):

typeof(String).GetField("Empty", 
    BindingFlags.Public | 
    BindingFlags.NonPublic | 
    BindingFlags.Static | 
    BindingFlags.GetField
).SetValue(null, "foo" );

当某个地方有代码这样做时,这会导致问题x = myClass.bar ?? string.Empty.

有没有什么方法(类似于不同的应用程序域或类似的)来防止(或检测)某人更改值,例如String.Empty或者也许是SqlDateTime.MinValue(或 .NET 中其他类似的只读字段)?


你可以定义你自己的const领域在your像这样组装:

internal const string Empty = "";

然后执行检查String.Empty http://msdn.microsoft.com/en-us/library/system.string.empty.aspx,但这几乎是徒劳的。

您必须在访问的所有地方执行检查String.Empty并有效地替换它(因为您会在比较时进行检查,所以实际使用没有意义String.Empty不再超过你的版本)。

既然是const,该值无法更改,这很好,但同时,如果String.Empty does一旦发生变化(无论可能性如何),您都必须更改您的值,然后重新编译一切引用该字段。

当然,你可以制作你的版本readonly,但是这样你就很容易通过反射改变值,然后你又回到了开始的地方。

除此之外,如果String.Empty改变了,不仅会影响与该领域的比较,而且我想巨大的BCL 中的许多方法无法正常工作;通过Reflector查看,它似乎在mscorlib(.NET 4.0)中被引用了几百次alone:

这么说来,你可以尝试并保证该值没有改变,但这并不实用(这将是一场永恒的猫捉老鼠的游戏),从你的程序的角度来看,如果String.Empty一旦被改变,世界就会终结,程序几乎一旦被改变就会很快可怕地死去。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

防止更改 String.Empty 的值 的相关文章

  • 复制 std::function 的成本有多高?

    While std function是可移动的 但在某些情况下不可能或不方便 复制它会受到重大处罚吗 它是否可能取决于捕获变量的大小 如果它是使用 lambda 表达式创建的 它依赖于实现吗 std function通常被实现为值语义 小缓
  • C中的malloc内存分配方案

    我在 C 中尝试使用 malloc 发现 malloc 在分配了一些内存后浪费了一些空间 下面是我用来测试 malloc 的一段代码 include
  • 错误:表达式不产生值

    我尝试将以下 C 代码转换为 VB NET 但在编译代码时出现 表达式不产生值 错误 C Code return Fluently Configure Mappings m gt m FluentMappings AddFromAssemb
  • 使用 LINQ2SQL 在 ASP.NET MVC 中的各种模型存储库之间共享数据上下文

    我的应用程序中有 2 个存储库 每个存储库都有自己的数据上下文对象 最终结果是我尝试将从一个存储库检索到的对象附加到从另一个存储库检索到的对象 这会导致异常 Use 构造函数注入将 DataContext 注入每个存储库 public cl
  • 如何区分用户点击链接和页面自动重定向?

    拥有 C WebBrowser control http msdn microsoft com en us library system windows forms webbrowser aspx在我的 WinForms 应用程序中 并意识
  • 获取两个工作日之间的天数差异

    这听起来很简单 但我不明白其中的意义 那么获取两次之间的天数的最简单方法是什么DayOfWeeks当第一个是起点时 如果下一个工作日较早 则应考虑在下周 The DayOfWeek 枚举 http 20 20 5B1 5D 3a 20htt
  • java.io.Serialized 在 C/C++ 中的等价物是什么?

    C C 的等价物是什么java io Serialized https docs oracle com javase 7 docs api java io Serializable html 有对序列化库的引用 用 C 序列化数据结构 ht
  • 在 C 中初始化变量

    我知道有时如果你不初始化int 如果打印整数 您将得到一个随机数 但将所有内容初始化为零似乎有点愚蠢 我问这个问题是因为我正在评论我的 C 项目 而且我对缩进非常直接 并且它可以完全编译 90 90 谢谢 Stackoverflow 但我想
  • 在 Visual Studio 2010 中从 Fortran 调用 C++ 函数

    我想从 Fortran 调用 C 函数 为此 我在 Visual Studio 2010 中创建了一个 FORTRAN 项目 之后 我将一个 Cpp 项目添加到该 FORTRAN 项目中 当我要构建程序时出现以下错误 Error 1 unr
  • qdbusxml2cpp 未知类型

    在使用 qdbusxml2cpp 程序将以下 xml 转换为 Qt 类时 我收到此错误 qdbusxml2cpp c ObjectManager a ObjectManager ObjectManager cpp xml object ma
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • 如何检测表单的任何控件的变化?

    如何检测 C 中表单的任何控件的更改 由于我在一个表单上有许多控件 并且如果表单中的任何控件值发生更改 我需要禁用按钮 我正在寻找一些内置函数 事件处理程序 属性 并且不想为此创建自定义函数 不 我不知道任何时候都会触发任何事件any控制表
  • Qt - ubuntu中的串口名称

    我在 Ubuntu 上查找串行端口名称时遇到问题 如您所知 为了在 Windows 上读取串口 我们可以使用以下代码 serial gt setPortName com3 但是当我在 Ubuntu 上编译这段代码时 我无法使用这段代码 se
  • 如何在 Xaml 文本中添加电子邮件链接?

    我在 Windows Phone 8 应用程序中有一些大文本 我希望其中有电子邮件链接 例如 mailto 功能 这是代码的一部分
  • C# 中的合并运算符?

    我想我记得看到过类似的东西 三元运算符 http msdn microsoft com en us library ty67wk28 28VS 80 29 aspx在 C 中 它只有两部分 如果变量值不为空 则返回变量值 如果为空 则返回默
  • 使用反射覆盖最终静态字段是否有限制?

    在我的一些单元测试中 我在最终静态字段上的反射中遇到了奇怪的行为 下面是说明我的问题的示例 我有一个基本的 Singleton 类 其中包含一个 Integer public class BasicHolder private static
  • 为什么 gcc 抱怨“错误:模板参数 '0' 的类型 'intT' 取决于模板参数”?

    我的编译器是gcc 4 9 0 以下代码无法编译 template
  • 方法优化 - C#

    我开发了一种方法 允许我通过参数传入表 字符串 列数组 字符串 和值数组 对象 然后使用这些参数创建参数化查询 虽然它工作得很好 但代码的长度以及多个 for 循环散发出一种代码味道 特别是我觉得我用来在列和值之间插入逗号的方法可以用不同的
  • 使用 .NET Process.Start 运行时挂起进程 - 出了什么问题?

    我在 svn exe 周围编写了一个快速而肮脏的包装器来检索一些内容并对其执行某些操作 但对于某些输入 它偶尔会重复挂起并且无法完成 例如 一个调用是 svn list svn list http myserver 84 svn Docum
  • 如何将 PostgreSql 与 EntityFramework 6.0.2 集成? [复制]

    这个问题在这里已经有答案了 我收到以下错误 实体框架提供程序类型的 实例 成员 Npgsql NpgsqlServices Npgsql 版本 2 0 14 2 文化 中性 PublicKeyToken 5d8b90d52f46fda7 没

随机推荐

  • 如何从 Azure 数据工厂运行 PowerShell

    I have PowerShell该脚本将复杂的 CSV 文件分割为每 1000 条记录的较小的 CSV 文件 这是代码 i 0 Get Content C Users dell Desktop Powershell Input bigsi
  • SignTool 错误:访问被拒绝

    我正在尝试使用 pfx 文件签署外部 dllSignTool在cmd exe中使用以下代码 SignTool 签名 f MyCert pfx p MyPassword MyControl dll 但是 我不断收到以下错误消息 Done Ad
  • 如何过滤列表

    我正在编写一个简单的函数 从列表中取出任何奇数并返回仅包含偶数的列表 def purify numbers for i in numbers if i 2 0 numbers remove i return numbers print pu
  • 无法从其他应用程序读取 SharedPreferences

    EDITED 我有一个应用程序可以像这样写入 SharedPreferences Context otherAppsContext null try otherAppsContext createPackageContext AfroKey
  • 如何获取 jPlayer 中歌曲当前播放的时间? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我使用 jPlayer 控件来播放音
  • 在notifyAppWidgetViewDataChanged之后没有调用RemoteViewService中的onDataSetChanged()

    在我的 AppWidgetProvider 类中 我有以下代码onUpdate method Update each of the widgets with the remote adapter for int appWidgetId ap
  • 完美转发、可变参数模板、initializer_list - 一起

    gcc 4 8 1 和 clang 3 3 c 11 功能完整 我需要在某些构造 make shared c 14 make unique 等元素的函数中转发参数 但我对类型推导 转发初始值设定项列表 数组有问题 我需要的工作示例foo f
  • 了解托管 bean/支持 bean [重复]

    这个问题在这里已经有答案了 我正在学习 Java EE 6 我正在尝试掌握它的整体形象 我正在阅读有关 JSF 以及如何添加组件的内容 我正在将组件中的值设置 读取到具有 ManagedBean 注释的 bean 我在正确理解它时遇到一些困
  • 单个变量的线程安全

    我了解线程安全的概念 我正在寻找在尝试保护单个变量时简化线程安全的建议 假设我有一个变量 double aPass 我想保护这个变量 所以我创建了一个互斥体 pthread mutex t aPass lock 现在我可以想到两种好方法 但
  • 导入打字稿时如何在路径中使用变量

    是否可以将变量 或常量 放入路径中 而不是将整个路径写为字符串文字 看起来 Angular 除了字符串文字之外不接受任何内容 import aClass require simpleClass import aComponent from
  • 将 pandas 数据框转换为 pandas 系列

    我需要一些有关数据类型问题的帮助 我正在尝试转换 pandas 数据框 如下所示 timestamp number 2018 01 01 1 2018 02 01 0 2018 03 01 5 2018 04 01 0 2018 05 01
  • 从 NSURLConnection 的响应头中读取数据

    如何从服务器响应中发送的标头中读取数据 我正在使用 NSURLConnection 发送请求 如果 URL 是 HTTP URL 则NSURLResponse您在连接的委托中收到的 connection didReceiveResponse
  • xampp mysql 和 phpmyadmin 不起作用

    昨天我使用 xampp 并使用 apache 和 mysql 服务 今天想启动mysql服务 没成功 我尝试在论坛上搜索解决方案 但找不到任何内容 所以我问你 在 mysql 停止工作后 我在日志文件中找到此消息 2015 10 29 12
  • ASP.NET MVC 将数据从视图传递到控制器

    我有一个带有网格的视图 其中包含添加到工作站的项目 用户可以从下拉列表中选择一个项目 然后单击一个操作链接 该链接调用控制器将该项目添加到工作站 我可以通过读取控制器的 Post 操作中的 FormCollection 对象来使其工作 p
  • 如何在 AWS 负载均衡器响应中禁用 Apache HTTP 标头信息?

    我在 Apache 服务器上使用 AWS Elastic Beanstalk 部署了一个 node js 环境 我对环境运行了 PCI 扫描 但出现了 2 次失败 Apache ServerTokens 信息披露 Web服务器HTTP头信息
  • 从逗号分隔字段中选择

    说我有一个subscribers表 每个用户都有一行 如下所示 id name subscribers 1 user1 user2 user3 user4 2 user2 user4 user5 user3 3 user3 user1 us
  • Apache Spark:核心数量与执行器数量

    我试图了解在 YARN 上运行 Spark 作业时核心数量和执行器数量的关系 测试环境如下 数据节点数量 3 Data node machine spec CPU Core i7 4790 核心数 4 线程数 8 内存 32GB 8GB x
  • Firebase 功能 HTTPS 403 禁止

    我使用 Node 和 Express 构建了 Firebase HTTP 事件函数 该函数正在工作 但是当我在客户端调用该函数时 我得到403 Forbidden 第一次调用该功能时 我被要求使用 Google 帐户登录 我使用与 Fire
  • Python xml - 处理未封闭的令牌

    我正在读取数百个 XML 文件并使用 xml etree ElementTree 解析它们 快速背景 这些 XML 文件在某一时刻是完全有效的 但不知何故 在历史上处理它们时 我复制 粘贴它们的过程可能已损坏它们 事实证明 这是一个冲洗问题
  • 防止更改 String.Empty 的值

    部分是出于好奇的破坏事物的角度 部分是出于防范潜在问题的目的 想象一下通过调用以下内容 或类似的内容 但是string Empty是一个很好的例子 typeof String GetField Empty BindingFlags Publ