【发布时间】:2017-02-07 10:10:04
【问题描述】:
今天我在Codegolf StackExchange 进行了另一个 Codegolf 挑战,我尝试这样做:
SomeEnum = SomeCondition ? 1 : 2;
但这告诉我Cannot convert source type 'int' to target type 'SomeEnum',所以我尝试了这个:
SomeEnum = SomeCondition ? (SomeEnum)1 : (SomeEnum)2;
然后解决了我的问题,但令我惊讶的是,这里的第一个演员据说是多余的。我的问题是:为什么我只需要将最后一个整数转换为 SomeEnum?
【问题讨论】:
-
如果去掉“冗余”转换,代码实际上还能编译吗?
-
你有这方面的一个小例子吗?我试图复制它,我必须同时转换两个结果,否则我的代码将无法编译。
-
@Damien_The_Unbeliever 是的,当您只投射一侧时,代码仍然可以编译并且工作正常。看起来很混乱!
-
不应该,根据 C# 规范。您可以尝试创建一个minimal reproducible example 吗?
-
您的高尔夫代码有一个重要的区别 - 第一个文字是文字
0而不是1。