【发布时间】:2013-07-22 10:42:25
【问题描述】:
我已经学会在我的类中使用隐式运算符。
现在我想做这样的事情:
public static implicit operator string(int val)
{
return "The value is: " + val.ToString(); // just an nonsense example
}
但是这是错误的。编译器说:
用户定义的转换必须与封闭类型相互转换
我该如何解决这个问题?
我的目标是能够运行这样的代码:
int x = 50;
textbox1.Text = x; // without using .ToString() or casting
【问题讨论】:
-
为什么会这样?在我看来这是完全正确的!
-
@RomanoZumbé 我更新了我的问题。当我尝试这个时,编译器说“用户定义的转换必须转换为封闭类型”
-
您无法解决此问题,因为您必须将隐式运算符实现为正在转换的类中的静态方法 - 当然,您无法更改 System. Int32 的实现。
-
这是一个糟糕的目标。不要尝试编写这样的代码。人们对关闭
option strict的 VB.NET 编码人员感到不满是有原因的。 -
@J...我会考虑的。
标签: c# .net-3.5 implicit-conversion implicit