【发布时间】:2023-03-23 19:59:01
【问题描述】:
在委托的C# documentation 中,它说“委托是一种引用类型,可用于封装命名或匿名方法。委托类似于 C++ 中的函数指针;但是,委托是类型-安全和安全“
我的问题是,他们所说的“安全”代表是什么意思?
【问题讨论】:
-
看起来那部分是由营销部门编写的……它根本不意味着任何东西。安全性在于设计,而不是语言功能。
-
不是语言功能?当然它也依赖于语言,看看 ADA
-
@BenVoigt 实际上它确实意味着什么。委托不可能指向无效地址,这可能在 C 中发生。因此它们可以安全使用 - 您不会跳入一些随机内存。
-
@TomTom:Wild 委托至少与 Wild 函数指针一样可能。 (可能更有可能,因为当使用带有 p/invoke 的委托时,调用者和被调用者之间不可能进行类型交叉检查)C++ 函数指针是完全安全的,除非你开始强制转换它们(总是一个坏主意),并且委托也会遇到麻烦当你禁用类型系统时。
-
好吧,很多 C 语言的人不同意你的观点,指针损坏是一个问题,C# 中的不安全块甚至不值得讨论,因为不安全的定义使安全无效。
标签: c# .net security delegates