结构上的扩展方法
你能为结构添加扩展方法吗?
没有找到相关结果
已邀请:
4 个回复
漂截嘘
薄响
作为
参数,但C#不允许定义这样做的扩展方法。虽然改变
的struct方法可能有些危险(因为编译器允许在只读结构上调用struct方法,但是按值传递
),如果小心确保它们是有用的,它们有时也很有用。仅在适当的环境中使用。 顺便说一句,vb.net允许扩展方法接受
作为
参数,无论它是类,结构还是未知类通用。在某些可能由结构实现接口的情况下,这可能会有所帮助。例如,如果一个人试图调用一个类型为
的变量的扩展方法,它取一个类型为
的
参数,或者按值取一个约束为
的泛型的
参数,并且如果该方法试图推进枚举器,当方法返回时,任何进步都将被撤消。但是,通过引用采用约束泛型的扩展方法(可能在vb.net中)将按预期运行。
琶竞捆栓
类型。
在此之后,您可以像使用
一样使用
。注意溢出等转换项目。
捻盒愧杯
为了修改struct内容,struct paramater需要声明为“ref”。但是,C#中不允许使用“this ref”。我们能做的最好的是静态非扩展方法,如:
在VB.NET中,您可以将其创建为ByRef结构扩展方法,因此它可以修改原始结构: