gpt4 book ai didi

C# - 使用选中/未选中运算符的自定义显式转换

转载 作者:太空狗 更新时间:2023-10-29 22:13:14 26 4
gpt4 key购买 nike

我正在学习用 C# 编写自定义类型转换,但我有一个问题无法通过 Google/MSDN/之前发布的 SO 项目来解决。

通常,缩小数字类型的 C# 程序通过未经检查的显式转换来实现,例如:

int i = 256;
byte b = (byte)i; // b == 0

但是,下面会给出溢出异常:

byte b = checked((byte)i);

我的问题如下:checked/unchecked 关键字的行为是否可以在自定义类型转换中实现,例如:

class Foo {
public static explicit operator int(Foo bar) {
if (checked)
throw someEception
else
return some Foo to int conversion
}
}

当然,上面的代码不是答案,但是有人知道这样的事情是否可行吗?

最佳答案

checked 是编译时的事情。也就是说,它的唯一作用是直接checked 语句包围的代码块,而不是该 block 中调用的方法。因此,在运行时不会有 checkedunchecked 上下文,您可能希望根据它调整函数的行为。

关于C# - 使用选中/未选中运算符的自定义显式转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1724128/

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