小弟上次去面试,有这样一道笔试题:用winform制作一个简单的计算器,只用实现+-运算,但是要求只能使用string类型的变量。我解决的方法是通过重载运算符,把string类型的变量先显式转化为double类型相加后在转回string类型,返回到主程序。回来之后自己做了一下,发现重载运算符之后在调试时系统仍然提示“运算符‘-’无法运用于string和string类型的操作数”。就是说运算符还是没有重载,请大家帮我看一下是怎么回事,以下是我重载-运算符的代码,+运算符的和他类似。
public static Form1 operator- (Form1 from)
{
Form1 result=new Form1();
double val1;
double val2;
val1=Convert.ToDouble(from.number1);
val2=Convert.ToDouble(from.number2);
double k=val1-val2;
result.result=k.ToString();
return result;
}
public static Form1 operator- (Form1 from)
{
Form1 result=new Form1();
double val1;
double val2;
val1=Convert.ToDouble(from.number1);
val2=Convert.ToDouble(from.number2);
double k=val1-val2;
result.result=k.ToString();
return result;
}
解决方案 »
- LINQ TO XML 获取根节点属性 在线等
- 100分解决简单问题,在线等,解决马上给分
- 中文输入时候多次触发KeyPress事件
- 引用 MIS金质打印通GoldPrinter.ExcelExpert.dll问题?创建Excel类实例时错误,详细信息:拒绝访问。
- 使用Google web API的困惑
- 帮忙把VB代码翻译成C#
- tfs客服端连接后,没有“源代码管理”【有图】,望高手指点
- 在 WIN98 的一个 Form 上打开另外一个 Form,同时关闭原来的Form的问题
- 高手请近,怎样监视一个进程对硬盘的读写
- 请问,我用sql语句删除了datagrid里面的一条数据以后,用refresh()方法刷新datagrid去没有反应!?为什么?
- 怎样改树控件的背景色
- listview行间距
第一步就是隐式转换,即需要把string类型转换成你所要操作的类型;
第二步就是运算符操作。Sample code as follows:
public struct MyString
{
private string strValue;
public string Value
{
get{ return strValue;}
} public static string operator -( MyString test1, MyString test2)
{
double val1;
double val2;
val1=Convert.ToDouble(test1.strValue);
val2=Convert.ToDouble(test2.strValue);
double k=val1-val2;
return k.ToString();
} public MyString( string sValue )
{
strValue = sValue;
} public static implicit operator MyString( string sValue )
{
return new MyString( sValue );
}
}//Calling
MyString string1 = "11.1";
MyString string2 = "12.1";
MessageBox.Show( string1 - string2 );