gpt4 book ai didi

c# - 从扩展方法修改 ValueType?

转载 作者:可可西里 更新时间:2023-11-01 08:09:29 26 4
gpt4 key购买 nike

几天前我需要切换一个bool,结果我这样做了:

IsVisible = !IsVisible;

我发现这是归档该功能的最简单方法。但在像上面的例子那样做之前,我尝试了一些不同的方法。

主要是关于使用扩展方法。在我看来,这会使它变得更简单,或者至少可以减少要写的字符。

IsVisible.toggle();

但由于 boolean 是一种值类型,因此通过扩展方法发送的 bool 是原始 bool 的副本,而不是引用类型。

public static void Toggle(this boolean value)
{
value = !value;
}

这会做我需要的,但由于 boolean 被切换是原始 boolean 的副本,因此更改不适用于原始...

我尝试将 ref 关键字放在 boolean 前面,但是没有编译。而且我还没有找到不编译的原因,这不是扩展方法的完美功能吗?

public static void Toggle(this ref boolean value)

我什至尝试将 boolean 转换为一个对象,在我的脑海中,它会变成一个引用类型,然后它就不再是一个副本,并且更改会被传回。那也没用。

所以我的问题是,是否有可能进行扩展回传更改,或者使用其他方法使其比现有的更简单?

我知道它很可能不会比上面的例子更简单或更合乎逻辑,但你永远不知道:)

最佳答案

基本类型是不可变的。您必须像这样编写调用代码:

IsVisible = IsVisible.Toggle();

这是您可以使用扩展方法做的最好的事情。没办法。

关于c# - 从扩展方法修改 ValueType?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1337050/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com