C# 文档大量使用术语“用户定义”。例如:
The as operator can't perform... user-defined conversions...
虽然我还没有遇到正式的定义,但我认为 C# 语言规范中未包含的任何内容都是用户定义的。
也就是说,我最初认为用户定义意味着任何由该语言构建的内容(而不是成为该语言的一部分),但这可能站不住脚,因为可以在 C# 中实现 C# 编译器。很明显,int
和 double
不是用户定义的;但对于 String
和 DateTime
则不太清楚。
那些属于框架库但不属于 C# 的内容又如何呢? Yuval 的回答表明框架库不是用户定义的,而 Patricks 的回答表明它们是用户定义的。
最佳答案
Note that the as operator performs only reference conversions, nullable conversions, and boxing conversions. The as operator can't perform other conversions, such as user-defined conversions, which should instead be performed by using cast expressions.
在这种情况下,用户定义的转换是语言本身不处理的转换。例如,该语言处理数字类型之间的转换。这些转换被内置到编译器中,并且有点棘手,因为它们不反射(reflect)语言的“正常”行为(自从他们构建它以来)。
在编译器未涵盖的情况下,您需要自己进行强制转换。您可以使用转换运算符,如此处所述 on MSDN .
直接回答标题问题:是。 .NET 框架库被认为是用户定义的。
关于c# - .NET 框架库是否被视为用户定义的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29080535/