Mou*_*lde 14 c# extension-methods
几天前我需要切换一个bool,我最终这样做:
IsVisible = !IsVisible;
Run Code Online (Sandbox Code Playgroud)
我发现这是最简单的归档方式.但在做上面的例子之前,我尝试了一些不同的方法.
主要是关于使用扩展方法.在我的观点中,它会使它更简单,或者至少更少写字.
IsVisible.toggle();
Run Code Online (Sandbox Code Playgroud)
但是,由于布尔值是值类型,因此通过扩展方法发送的bool是原始bool的副本,而不是引用类型.
public static void Toggle(this boolean value)
{
value = !value;
}
Run Code Online (Sandbox Code Playgroud)
哪个会做我需要的,但因为布尔切换是原始布尔的副本,更改不适用于原始..
我尝试将ref关键字infront置于"boolean",但是没有编译.我仍然没有找到不编译的原因,这不是扩展方法的完美功能吗?
public static void Toggle(this ref boolean value)
Run Code Online (Sandbox Code Playgroud)
我甚至尝试将boolean转换为一个对象,在我的脑中将它变成一个引用类型,然后它将不再是一个副本,并且更改将被传回.那也行不通.
所以我的问题是,是否有可能使扩展传回更改,或者其他方式使其比现有的更简单?
我知道很可能不会比顶级示例更简单或更合理,但你永远不会知道:)
提前致谢.
Joe*_*orn 11
原始类型是不可变的.你必须像这样编写你的调用代码:
IsVisible = IsVisible.Toggle();
Run Code Online (Sandbox Code Playgroud)
这是扩展方法的最佳选择.没办法解决它.
| 归档时间: |
|
| 查看次数: |
2495 次 |
| 最近记录: |