【发布时间】:2013-05-31 14:02:21
【问题描述】:
我有这门课:
public class SmartTable : DataTable
{
public string this[int Row, int Column] { ... }
public string this[int Row, string Column] { ... }
}
我想在 THIS[,] 上添加一个隐式运算符
那么我可以使用:
string s = smartT[a,b];
或
int i = smartT[a,b];
我用谷歌搜索了这个,但我什至不知道如何搜索它。
我尝试过(基于 IntelliSense)声明如下内容:
public static implicit operator int[int r, int c](...) {...}
或
public static implicit operator int (SmartTable sm, int a, int b)
并且不工作。
谢谢
=== 编辑 ===
这是一个DataTable,一个表有字符串,整数,...
我想避免每次使用此表时都放入 Convert.To--(...)...
如果我尝试将字段放在 int 上,是因为它是一个整数字段... 我正在使用的解决方案是 create iGet(int C, int R), sGet(...), dGet(...)
【问题讨论】:
-
问题是您似乎想要从
string到int的隐式转换,但这是不可能的:语言不提供它,并且您无法在以下情况下创建用户定义的转换两种类型都是内置的。 -
@dlev 我不明白你的评论,或者我无法解释我想要什么...内部隐式代码将是 Convert.toInt() 或 .ToString()...
-
如果您的
smartT[a,b]为两个重载都返回string,您希望如何将其转换为int?它只是对字符串值执行Int32.Parse吗?您是否曾经返回无法转换为整数的字符串(例如“Hello World!”)? -
@Rafael 你可以这样做,当然,但我的意思是它不能隐式:你需要明确地这样做(可能使用一个名为@的方法987654332@,可能带有实际返回
int的索引器。)
标签: c# matrix operator-keyword implicit