关于c#的显c 无法隐式转换换问题

c#中无法将”int “类型隐式转换为”string“如何解决?
c#中无法将”int “类型隐式转换为”string“如何解决?
09-10-24 &
确实是那样,你case那不能直接用整型的,因为你switch那用的变量是字符串的 所以case那也要用string 对于你这的,你是不是直接用输入的姓名来判断密码是否正确? 那你也可以这样, int myName = Int32.Parse(Console.ReadLine()); 其他不变,直接输入数字看看 不行,你程序有严重的问题···我直接给你修改了,你自己看看 using S using System.Collections.G using System.C using System.L using System.T namespace Temp { class Program { static void Main(string[] args) { bool myBool = do { //获取用户输入的姓名 Console.WriteLine(&请输入姓名:&); Console.WriteLine(&(1)张三(2)李四(3)王五&); int myName = Int32.Parse(Console.ReadLine()); //获取用户输入的密码 Console.WriteLine(&请输入密码:&); string myPassword = Console.ReadLine().Trim(); //根据用户的输入,提示不同的信息 switch (myName) { //当myName等于1时的处理 case 1: if (myPassword == &123456&) { Console.WriteLine(&密码正确&); } else { Console.WriteLine(&密码错误&); }
//当myName等于2时的处理 case 2: if (myPassword == & 234567&) { Console.WriteLine(&密码正确&); } else { Console.WriteLine(&密码错误&); }
//当myName等于3时的处理 case 3: if (myPassword == & 345678&) { Console.WriteLine(&密码正确&); } else { Console.WriteLine(&密码错误&); }
//当myName等于其他时的处理*/ default: Console.WriteLine(&查无此人&);
} } while (!myBool); //当输入为空时,提示退出信息 Console.WriteLine(&没输入有效的姓名,系统将退出……\n按回车键退出程序!&); Console.ReadLine(); } } }
请登录后再发表评论!下次自动登录
现在的位置:
& 综合 & 正文
C#类型转换之初级篇(1)
学过编程的朋友都知道类型转换,并且也都清楚“隐式转换”、“显式转换”、“装箱”、“拆箱”等概念。但是,类型转换究竟有多少种?如何对其进行划分?何时应该使用何种类型转换?
类型转换的分类
学过编程的朋友都知道类型转换,并且也都清楚“隐式转换”、“显式转换”、“装箱”、“拆箱”等概念。但是,类型转换究竟有多少种?如何对其进行划分?何时应该使用何种类型转换?
本文将就这些问题进行一个简要解释。需要说明的是,本文中的几乎所有内容都来自我在讲课过程中的积累,在此强烈感谢我的学员,尤其是对我的看法提出疑问和建议的学员!另外,本文不一定对您的实际编程工作有太多帮助,不过可以让您对类型转换有一个新的理解。
1、相关概念
类型转换发生的时机 (Occasion)——当发生值的复制时,可能会发生类型转换。所谓“值的复制”,包括赋值运算和方法传参。如果被赋值的变量或方法的形式参数的类型与实际的对象类型不同,就需要进行类型转换。
下面给出两种发生类型转换的情况。
2int x = 10;
// 此处发生类型转换,因为x与y的类型不同。
6void F(long var) ...{ ... }
int i = 10;
// 此处发生类型转换,因为实参i与形参var的类型不同。
源类型 (Source Type) 和目标类型 (Destination Type) ——当发生类型转换时,被赋值的变量或方法的形参的类型称为目标类型,而实际的对象的类型称为源类型。
例如前面例1中,变量x的类型int是源类型,而变量y的类型long是目标类型;例2中,变量i的类型int是源类型,而方法F的形参var的类型long是目标类型。
2、类型转换的分类
C#中的类型转换有两种分类方法,一种是根据转换方式的不同进行划分,可以分为显式 (Explicit) 转换和隐式 (Implicit) 转换两种;另外一种是根据源类型和目标类型之间的关系进行划分,可以分为变换 (Conversion)、投射 (Cast)和装箱/拆箱 (Boxing/Unboxing)。
2.1 显式转换和隐式转换
从直观上看,显式和隐式转换只是语法上面的差别。当发生类型转换时,如果在中明确指定了目标类型,则称为显式转换,否则则称为隐式转换。
C#通过将形如“(目标类型)”这样的语法构造放在待转换对象的前面,来表示一个显式转换。
下面的代码介绍了在C#语言中进行显式和隐式转换时的语法。
int x = 10;
// 隐式转换
x = (int) long;
// 显示转换
需要注意的是,不是任意两种类型之间都能随意进行转换的。另外,无论显式转换还是隐式转换,都可能会失败。
如果显式转换失败,会在运行时抛出异常(这个异常可能是InvalidCastException,也可能是InvalidOperationException、OverflowException等具体异常);如果隐式转换失败,则会在编译时得到一个错误,指出不能进行隐式转换。
最后,隐式转换也可以用显式转换替代,但显式转换不能用隐式转换替代。换句话说,可以用显式转换的地方,用隐式转换也没什么问题;但需要显式转换的地方,就一定不能用隐式转换。
下面将从另外一种角度介绍各种不同的类型转换。
&&&&推荐文章:
【上篇】【下篇】2926人阅读
using System.Collections.G
using System.L
using System.T
namespace CSharp基础
class 类型转换
public static void Main()
//byte b1 = 22;
//byte b2 = 33;
//在下面这句中,b1+b2默认是会返回一个int,但是我们声明为byte,会产生字节丢失,所以系
//统不会隐式转换,去产生编译错误.
//byte total = b1 + b2;
//如果我们用long去存结果,一定是不会丢数据的,些处系统做了一个隐式转换
//long total = b1 + b2;
//可空类型与普通类型之间不可隐式转换,这是因为有null的处理,如果能转,那么普通值无法处理null
//int? a = 22;
//int b = 错
//可空类型可以与可空类型发现隐式转换,规则与普通类型一致
//int? a = 99;
//long? b =
//int? a = 255;
//byte? b = 错,虽然255确实在byte可接受范围之内
Console.WriteLine( "------------显式类型转换---------------------");
//long a = 0;
//int b = (int)a;
//Console.WriteLine( b );
//以上代码中,long显示转换为int会丢掉其中的几个字节,而long中的值恰好又大于int的表式范围,所以最后出现的值
//不是我们所希望的
//long a2 = 65535;
//int b2 = (int)a2;
//Console.WriteLine( b2 );
//以上代码同样是一个显示转换,而65535是在int字节范围之内,以后即便丢掉字节后,值仍然没有变,是我们希望的结果
//考虑一个问题,以上两各方式,是不是存在一种侥幸,那么万一要是超出范围呢,我们怎么控制?
//c#为我们提供了checked方式检查值的溢出
//long a3 = 00000;
//int b3 = checked( (int)a3); //运行时刨出异常
//小数强转为整数时会丢失其小数部分
//float price = 23.5f;
//int reInt = (int)(price + 0.5f);
////以上方式加0.5f是为了四舍五入价格的最接近整数,一般用于不再参与运算,只做展示,推荐!
//Console.WriteLine( reInt );
//分析字符串,进行值转换
//string str = "65535";
//int i = int.Parse(str);
//Console.WriteLine(i);
//string str2 = "false";
//bool i2 = bool.Parse(str2);
//Console.WriteLine(i2);
Console.Read();
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:224427次
积分:3229
积分:3229
排名:第7136名
原创:95篇
评论:36条
(1)(1)(1)(5)(3)(1)(1)(3)(2)(19)(33)(30)(2)找好工作,快人一步您所在的位置: &
C#隐式转换学习笔记
C#隐式转换学习笔记
中国IT实验室
这里介绍C#隐式转换,C# 既支持隐式类型转换又支持显式类型转换。在扩大转换的情况下是C#隐式转换。例如,下面从 int 到 long 的转换是隐式的,如同 Java 中的一样。
C#有很多值得学习的地方,这里我们主要介绍C#隐式转换,包括介绍强制转换规则等方面。
C#隐式转换
Java 和 C# 遵守相似的数据类型自动转换和强制转换规则。
同 Java 一样,C# 既支持隐式类型转换又支持显式类型转换。在扩大转换的情况下是C#隐式转换。例如,下面从 int 到 long 的转换是隐式的,如同 Java 中的一样:int&intVariable&=&5; &long&l&=&intVariable;&
下面是 .NET 数据类型之间的C#隐式转换列表:
498)this.width=498;' onmousewheel = 'javascript:return big(this)' alt=C#隐式转换列表 src="/files/uploadimg/9480.gif">
可以使用与 Java 一样的语法对希望显式转换的表达式进行强制转换:long&longVariable&=&5483; &int&intVariable&=&(int)&&
【编辑推荐】
【责任编辑: TEL:(010)】
关于的更多文章
AngularJS是很多Web开发人员在打造单页面应用程序时的首选创建方
大数据时代已经到来,每个企业都开始忙着数据挖掘,忙着数据分析,忙着构建各种算法模型。但为什么你无法引发“技术红颜”式的蝴蝶效应?为什么你眼中对用户的“精准推荐”,成了Ta备感厌烦的“精准骚扰”
讲师: 4人学习过讲师: 7人学习过讲师: 66人学习过
春运大军前天正式启动了。昨天的新闻有几条不怎么好的
每年的一月份大约都是在看似忙忙碌碌中度过的。最近一
自从MySQL被Oracle收购以后,PostgreSQL逐渐成为开源
《Cisco网络工程案例精粹》是一本以案例为基础兼顾知识概述的案例性书籍,所收录的案例都是笔者精心挑选出来的在网络工作中常见
51CTO旗下网站

我要回帖

更多关于 c语言隐式转换 的文章

 

随机推荐