c# - 在反射中使用字符串而不是 System.String?
问题描述
我最近遇到了这个(投票率很高的)社区维基,它指出
你不能
string
在反射中使用;你必须使用String
.
但是,由于答案是从 2011 年开始的,并且由于我从未遇到过string
在反射场景中使用的任何问题,所以我想知道该声明是否仍然成立。
此外,考虑到and都被编译为string
System.String
System.String
并string
只是 的别名System.String
,我认为没有任何潜在的差异,更不用说问题了。
在反射中使用时,我试图找到差异或问题string
,但我找不到:
获取类型:
string a = "Foo";
System.String b = "Foo";
Type aType = a.GetType(); // yields System.String - big surprise ;)
Type bType = a.GetType(); // yields System.String
在运行时调用方法:
string a = "Foo Bar";
System.String b = "Foo Bar";
bool aContainsBar = (bool) a.GetType()
.GetMethod("Contains")
.Invoke(a, new object[] { "Bar" });
// yields true - big surprise again ;)
bool bContainsBar = (bool) b.GetType()
.GetMethod("Contains")
.Invoke(a, new object[] { "Bar" });
// also yields true
200+ 票不会说谎 - 我对使用string
和System.String
反射之间存在/曾经有什么区别非常感兴趣。
陈述仍然正确吗?如果是这样,您能否提供一个示例来说明string
和之间的区别System.String
?
解决方案
推荐阅读
- docker - 将前端烧瓶容器连接到后端烧瓶容器
- c++ - 在实践中,是否可以在 API 标头中添加宏以更改类的布局(或大小)?
- java - 为什么@NotBlank 不显示为导入
- python - JSON with Bytes : TypeError: 'abc' 有类型
,但预期其中之一:( ,) - clojure - 在 clojure 中的单个命令中更新多个值
- java - Android Studio 中的动画太慢了
- java - 命令提示符运行中的 Java.lang.NoClassDefFoundError
- javascript - 如何在类中调用函数?
- java - JMeter 基于 Cucumber (java) 执行 JUnit 测试
- docker - 无法连接到远程 dockerized pulsar 服务器