C#运算符+无法应用object和object操作数

曲建华 2020-09-18 10:00:24

为什么前面加上“”+ 就不会报错 不加的话就报错是怎么回事
...全文
1245 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
大鱼> 2020-09-18
  • 打赏
  • 举报
回复
object不能直接作用与字符串进行拼接,需要将object先转成字符串,如上面说的.ToString(),将object转成字符串后再进行拼接
曲建华 2020-09-18
  • 打赏
  • 举报
回复
引用 3 楼 ∽油条á 的回复:
这基础真是一言难尽啊

新手在自学,见笑了。就是不明白两张图的差别在哪里
曲建华 2020-09-18
  • 打赏
  • 举报
回复
引用 2 楼 OrdinaryCoder 的回复:
sqldr["XXX"].ToString();

谢谢,为什么前面加上“”就不会报错了呢?
曲建华 2020-09-18
  • 打赏
  • 举报
回复
引用 1 楼 正怒月神 的回复:
sqldr[].toString() + sqldr[].ToString()

谢谢,我想问下,为什么前面加上“‘’就不会报错了呢
OrdinaryCoder 2020-09-18
  • 打赏
  • 举报
回复
sqldr["XXX"].ToString();
正怒月神 2020-09-18
  • 打赏
  • 举报
回复
sqldr[].toString() + sqldr[].ToString()
曲建华 2020-09-18
  • 打赏
  • 举报
回复
引用 8 楼 datafansbj 的回复:
楼主需要仔细研究 + 这个操作符重载的规则。 1+1 可以理解为2 "a"+"b"可以理解为"ab" sqlsdr["name"] + sqlsdr["money"] 无法理解,因为不支持 + 操作符重载 至于在前面增加一个 “”就可以,是因为编译器的智能判断,认为后面的变量可以默认转换为字符串(所有类型都有 ToString 方法),而与前面的“”进行连接运算;在后面增加“”就不可以,因为 + 运算优先顺序是从左到右,先算sqlsdr["name"] + sqlsdr["money"],却无法运算,所以报错。
谢谢,非常感谢
datafansbj 2020-09-18
  • 打赏
  • 举报
回复
楼主需要仔细研究 + 这个操作符重载的规则。
1+1 可以理解为2
"a"+"b"可以理解为"ab"
sqlsdr["name"] + sqlsdr["money"] 无法理解,因为不支持 + 操作符重载

至于在前面增加一个 “”就可以,是因为编译器的智能判断,认为后面的变量可以默认转换为字符串(所有类型都有 ToString 方法),而与前面的“”进行连接运算;在后面增加“”就不可以,因为 + 运算优先顺序是从左到右,先算sqlsdr["name"] + sqlsdr["money"],却无法运算,所以报错。

C#本质论(第3版) 详细介绍C# 4.0 第1章 c#概述 1.1 hello world 1.2 c#语法基础 1.2.1 c#关键字 1.2.2 类型定义 1.2.3 main 1.2.4 语句和语句分隔符 1.2.5 空白 1.3 使用变量 1.3.1 数据类型 1.3.2 变量的声明 1.3.3 变量的赋值 1.3.4 变量的使用 1.4 控制台输入和输出 1.4.1 从控制台获取输入 1.4.2 将输出写入控制台 1.5 注释 1.6 托管执行和公共语言基础结构 1.7 c#和net版本 .1.8 cil和ildasm 1.9 小结 第2章 数据类型 2.1 基本数值类型 2.1.1 整数类型 2.1.2 浮点类型 2.1.3 decimal类型 2.1.4 字面值 2.2 更多基本类型 2.2.1 布尔类型 2.2.2 字符类型 2.2.3 字符串 2.3 null和void 2.3.1 null 2.3.2 void 2.4 类型的分类 2.4.1 值类型 2.4.2 引用类型 2.5 可空修饰符 2.6 数据类型之间的转换 2.6.1 显式转型 2.6.2 隐式转型 2.6.3 不进行转型的类型转换 2.7 数组 2.7.1 数组的声明 2.7.2 数组的实例化和赋值 2.7.3 数组的使用 2.7.4 字符串作为数组使用 2.7.5 常见错误 2.8 小结 第3章 运算符和控制流 3.1 运算符 3.1.1 一元运算符正和负 3.1.2 二元算术运算符 3.1.3 圆括号运算符 3.1.4 赋值运算符 3.1.5 递增和递减运算符 3.1.6 常量表达式 3.2 流控制概述 3.2.1 if语句 3.2.2 嵌套if 3.3 代码块 3.4 作用域和声明空间 3.5 布尔表达式 3.5.1 关系运算符和相等性运算符 3.5.2 逻辑布尔运算符 3.5.3 逻辑求反运算符 3.5.4 条件运算符 3.5.5 空接合运算符 3.6 按位运算符 3.6.1 移位运算符 3.6.2 按位运算符 3.6.3 按位赋值运算符 3.6.4 按位取反运算符 3.7 控制流语句 3.7.1 whi.1 e和do/while循环 3.7.2 for循环 3.7.3 foreach循环 3.7.4 switch语句 3.8 跳转语句 3.8.1 break语句 3.8.2 continue语句 3.8.3 go to语句 3.9 c#预处理器指令 3.9.1 排除和包含代码 3.9.2 定义预处理器符号 3.9.3 生成错误和警告 3.9.4 关闭警告消息 3.9.5 nowarn:选项 3.9.6 指定行号 3.9.7 可视编辑器提示 3.10 小结 第4章 方法和参数 4.1 方法的调用 4.1.1 命名空间 4.1.2 类型名称 4.1.3 作用域 4.1.4 方法名称 4.1.5 参数 4.1.6 方法返回值 4.1.7 语句与方法调用的比较 4.2 方法的声明 4.2.1 参数声明 4.2.2 方法返回值声明 4.3 uslng指令 4.4 main()的返回值和参数 4.5 参数 4.5.1 值参数 4.5.2 引用参数 4.5.3 输出参数 4.5.4 参数数组 4.6 递归 4.7 方法重载 4.8 可选参数 4.9 用异常实现基本错误处理 4.9.1 捕捉错误 4.9.2 使用throw语句报告错误 4.10 小结 第5章 类 5.1 类的定义和实例化 5.2 实例字段 5.2.1 实例字段的声明 5.2.2 实例字段的访问 5.3 实例方法 5.4 使用this关键字 5.5 访问修饰符 5.6 属性 5.6.1 属性的声明 5.6.2 自动实现的属性 5.6.3 命名规范 5.6.4 提供属性验证 5.6.5 读和只写属性 5.6.6 为取值方法和赋值方法指定访问修饰符 5.6.7 属性作为虚字段使用 5.6.8 属性和方法调用不允许作为ref或out参数值使用 5.7 构造器 5.7.1 构造器的声明 5.7.2 默认构造器 5.7.3 对象初始化器 5.7.4 构造器的重载 5.7.5 使用this调用另一个构造器 5.8 静态成员 5.8.1 静态字段 5.8.2 静态方法 5.8.3 静态构造器 5.8.4 静态属性 5.8.5 静态类 5.9 扩展方法 5.10 封装数据 5.10.1
攀枝花学院实验报告 实验课程: Visual C#,NET程序设计 实验项目: 上机实验1 上机实验2 实验日期:2015 系:数学与计算机学院 班级: 2013级计算机科学与技术 姓名: 何静 学号: 201310801009 同组人: 指导教师:罗明刚 成绩: 实验目的: ;理解c#的值类型,常量和变量的概念. 掌握c#常用运算符以及表达式的运算规则. 理解数据类型转换的方法. 掌握数组和字符串的使用方法. 实验仪器设备,药品,器材:Microsoft visual studio 2010 实验原理:熟悉visual studio.net 2010的基本操作方法. 认真阅读本章相关内容,尤其是案例. 实验前进行程序设计,完成源程序的编写任务. 反复操作,直到不需要参考教材,能熟练操作为止. 实验步骤:见下页 一.实验目的 ;理解c#的值类型,常量和变量的概念. 掌握c#常用运算符以及表达式的运算规则. 理解数据类型转换的方法. 掌握数组和字符串的使用方法. 实验要求 熟悉visual studio.net 2010的基本操作方法. 认真阅读本章相关内容,尤其是案例. 实验前进行程序设计,完成源程序的编写任务. 反复操作,直到不需要参考教材,能熟练操作为止. 实验内容 设计一个简单的windows应用程序,完成以下功能:从键盘输入摄氏温度值,输出对应的华 氏温度值.运行效果如图所示. 摄氏温度到华氏温度的转换公式为: Fahrenheir=9/5celsius+32 核心代码如下: double c = Convert.ToDouble(txtCelsius.Text); double f = 9 / 5 * c + 32; txtFahrenheir.Text = f.ToString(); ........ 设计一个简单的储蓄存款计算器,运行效果如图所示. 核心代码如下: int money = Convert.ToInt32(txtmoney.Text); int year = Convert.ToInt32(txtyear.Text); double rate = Convert.ToDouble(txtrate.Text) / 100; double interest = money * year * rate; txtinterest.Text = interest.ToString(); double total = money + interest; txttotal.Text = total.ToString(); 设计一个简单的windows程序,输入5个数字,然后排序输出,运行果如图所示. 核心代码如下: double[] a = new double[5]; int i = 0; private void button1_Click(object sender, EventArgs e) { double element = double.Parse(txtelement.Text); a[i] = element; txtprior.Text += a[i] + ""; i++; lblNo.Text = "第输入第" + (i + 1) + "个元素"; } private void button2_Click(object sender, EventArgs e) { Array.Sort(a); txtsort.Text = a[0] + "" + a[1] + "" + a[2] + "" + a[3] + "" + a[4]; } 源程序 1.using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace _2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { if (txtc.Text != string.Empty) { double c = Convert.ToDouble(txtc.Text); double f = 9 / 5 * c + 32; txtf.Text = f.ToString(); } else if (txtf.Text !
第1章 开发环境 1 1.1 Visual Studio开发环境安装与配置 2 0001 安装Visual Studio 2005开发环境须知 2 0002 配置合适的Visual Studio 2005开发环境 2 0003 设置程序代码行序号 3 0004 开发环境全屏显示 3 0005 设置窗口的自动隐藏功能 3 0006 根据需要创建所需解决方案 4 0007 如何使用“验证的目标架构”功能 4 1.2 Visual Studio开发环境的使用 4 0008 为程序设置版本和帮助信息 4 0009 设置Windows应用程序启动窗体 5 0010 设置Web应用程序起始页 5 0011 如何设置程序的出错窗口 5 0012 如何进行程序调试 6 0013 如何结束不能正常运行的程序 6 0014 如何锁定窗体中的控件 6 0015 统一窗体中控件的字体设置 7 0016 通过“格式”菜单布局窗体 7 0017 起始页中的“Visual Studio开发人员新闻” 7 1.3 MSDN帮助的使用 8 0018 有效利用Visual Studio 2005附带程序 8 0019 有效使用MSDN帮助 9 0020 如何设置MSDN帮助 9 1.4 其他 10 0021 如何添加项目引用 10 0022 如何添加Web引用 10 0023 如何添加引用第3方控件 11 0024 如何生成DLL文件 11 0025 如何使用不安全代码 11 第2章 语言基础 13 2.1 注释 14 0026 如何对代码进行注释 14 0027 #region、#endregion关键字的使用技巧 14 0028 “///”符号的使用技巧 14 0029 使用注释取消程序语句的执行 15 2.2 语句 15 0030 跳转语句GOTO的使用 15 0031 Continue语句的使用 16 0032 Break语句的使用 16 0033 Return语句的使用 17 0034 如何实现无限循环 17 0035 巧用foreach语句控制控件 18 0036 有效使用switch case语句 18 2.3 运算符 19 0037 如何使用引号赋值 19 0038 巧用“^=”运算符 19 0039 巧用位移运算符 20 0040 使用条件运算符 20 0041 巧用分隔符 20 0042 如何处理转义字符 21 0043 “;”结束符问题 21 0044 如何使用“??”操作符 22 2.4 表达式与关键词 22 0045 正确使用“&&”和“||” 22 0046 如何处理程序“溢出”错误 23 0047 有效使用base关键字 23 0048 typeof表达式的使用 23 0049 params关键字可以指定多参数 24 0050 using关键字的用法 24 0051 变量的作用域 25 2.5 其他 26 0052 有效使用this对象 26 0053 如何声明变量 26 0054 如何声明相同类型的多个变量 26 0055 利用Object变量传递参数 27 0056 强行改变运算符的运算顺序 27 第3章 程序算法 29 3.1 数据结构 30 0057 如何实现单向链表 30 0058 如何实现双向链表 35 0059 如何实现堆栈 41 0060 队列的实现 43 0061 树的实现 44 3.2 排序 48 0062 如何实现选择排序算法 48 0063 如何实现冒泡排序算法 49 0064 如何实现快速排序算法 50 0065 如何实现插入排序算法 50 0066 如何实现希尔排序算法 51 3.3 常见算法的实际应用 52 0067 计算1+22+33+44+……+nn的值 52 0068 计算10!的值 52 0069 求最大公约数 52 0070 求最小公倍数 53 0071 判断素数的算法 53 0072 如何判断一个数是否是完数 54 0073 歌德巴赫猜想的算法 54 0074 八皇后问题 54 0075 用回溯法找出n个自然数中取r个数的全排列 55 0076 约瑟夫环问题 56 0077 猴子选大王 57 0078 如何判断IP是否正确 57 0079 如何将小写金额转换为大写金额 57 0080 统计文本字数 58 0081 文本中首字母改为大写 59 0082 C#随机数的产生 59 0083 身份证从15位升至18位算法 60 0084 十进制数转二进制数的算法 60 0085 十进制数转八进制数的算法 61 0086 十进制数转十六进制数的算法 62 0087 二、八、十六进制数转十进制数的算法 63 3.4 密码算法 65 0088 使用MD5算法对密码进行加密 65 0089 “凯撒”密码的算法 65 第4章 字符及字符串处理技术 67 4.1 字符及字符串转换 68

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧