c# - .NET 框架库是否被视为用户定义的?

标签 c# .net user-defined

C# 文档大量使用术语“用户定义”。例如:

The as operator can't perform... user-defined conversions...

虽然我还没有遇到正式的定义,但我认为 C# 语言规范中未包含的任何内容都是用户定义的。

也就是说,我最初认为用户定义意味着任何由该语言构建的内容(而不是成为该语言的一部分),但这可能站不住脚,因为可以在 C# 中实现 C# 编译器。

很明显,intdouble 不是用户定义的;但对于 StringDateTime 则不太清楚。

那些属于框架库但不属于 C# 的内容又如何呢? Yuval 的回答表明框架库不是用户定义的,而 Patricks 的回答表明它们是用户定义的。

最佳答案

full sentence you reference是:

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/

相关文章:

c# - 在 UnityContainer 中注册类型以使用其他命名注册来解析构造函数参数

c# - 给定一个作为字符串的 T-SQL 类型,将其评估为 .Net 类型的最简单方法是什么?

java - 如何将一个数字的最后一位数字与另一个数字的最后一位数字进行比较?

MySQL 在 where 子句中分配用户定义的变量

.net - .NET 中固定宽度处理的最佳实践

mysql - 使用用户定义的变量更新表(递增)

c# - 如何在 asp mvc 中从 Controller 接收 Ajax 数据值

c# - 无法将类型为 'System.Windows.Forms.Form' 的对象转换为类型 'Project.Form1'

c# - C#程序中return语句的作用是什么

c# - 文件传输占用大量 CPU