Csharp的类型转换

合集下载

2024年-Csharp基础知识PPT学习课件(精编)

2024年-Csharp基础知识PPT学习课件(精编)

A=b=c; A:b?a:c>d?c:d;
34
2.3.2
34
C#语言的基本原理 2
内容:
• C#程序的基本原理 • C#预定义类型 • 编写表达式 • 条件语句 • 循环语句
35
条件语句
2.4
Microsoft ©
• 条件语句可以根据布尔表达式的值,有选择性的
执行程序的某一部分
• 在C# 中的条件语句有 if 和 switch 两种 • if 适合两个分支判断 • switch 适合多个分支判断
• 作用:通过声明变量,可以在内存中为该变量申 请存储空间
• 语法:
类型 变量名;
int numberOfVisitors;
string name;
19
19
声明并初始化变量
Microsoft ©
第 2步:初始化变量
• 作用:给变量分配初值 • 语法:
变量名 = 初值;
string name; name = “Grizzly”; // 声明和初始化一步完成
端对齐
25
25
创建并使用枚举类型
2.2.5
Microsoft ©
• 枚举类型是一组被命名的数字常量,即:一个枚
举类型中包含了多个相关的数字常量,且每个常
量都被赋予了一个容易记忆的“名字”
• 使用enum关键字创建枚举类型
enum Weather { Sunny, Cloudy, Rain, Snow, fog
Console代表标准输出设备--- 屏幕,它属于System命名空间 WriteLine方法是Console类的方法。访问类或对象的方法使用
点取符.来完成。 字符串用双引号“ ”表示 字符串“Hello,World”是WriteLine方法的参数,表示屏幕输出

C++各种类型的转换string,QString,char,BYTE等等

C++各种类型的转换string,QString,char,BYTE等等

C++各种类型的转换string,QString,char*,BYTE等等总结一下刚刚写的程序中的C++各种类型的转换string,QString,char*, BYTE等等由于我采用Qt来写的界面,所以用到了QString类型1. QString和string的相互转换[cpp] view plaincopyprint?1.//------------------------2.// QString and string change3.//------------------------4.QString s2q(const string &s)5.{6.return QString(QString::fromLocal8Bit(s.c_str()));7.}8.string q2s(const QString &s)9.{10.return string((const char *)s.toLocal8Bit());11.}[cpp] view plaincopyprint?1.//------------------------2.// QString and string change3.//------------------------4.QString s2q(const string &s)5.{6.return QString(QString::fromLocal8Bit(s.c_str()));7.}8.string q2s(const QString &s)9.{10.return string((const char *)s.toLocal8Bit());11.}2. QString to Char*[cpp] view plaincopyprint?1.QString data;2.data.toLatin1().data();[cpp] view plaincopyprint?1.QString data;2.data.toLatin1().data();3. char to number[cpp] view plaincopyprint?1.int char2num(char ch)2.{3.if(ch>='0'&&ch<='9')return ch-'0';4.else if(ch>='a'&&ch<='f')return ch-'a'+10;5.return -1;6.}[cpp] view plaincopyprint?1.int char2num(char ch)2.{3.if(ch>='0'&&ch<='9')return ch-'0';4.else if(ch>='a'&&ch<='f')return ch-'a'+10;5.return -1;6.}4. number to QString[css] view plaincopyprint?1.QString::number(number,10);//10表示的是进制,如是16进制,则改为16[css] view plaincopyprint?1.QString::number(number,10);//10表示的是进制,如是16进制,则改为165. uint8_t to QString[cpp] view plaincopyprint?1.uint8_t Message_Digest;2.QString::number(Message_Digest,16);[cpp] view plaincopyprint?1.uint8_t Message_Digest;2.QString::number(Message_Digest,16);6. BYTE* to char[] to QString[cpp] view plaincopyprint?1.QString textshow = NULL;2.BYTE * output = new BYTE[1024];3.for(int i=0; i<16; i++)4.{5.char pBuff[2];6.sprintf(pBuff,"%02x",output[i]);7.textshow = textshow + pBuff;8.}[cpp] view plaincopyprint?1.QString textshow = NULL;2.BYTE * output = new BYTE[1024];3.for(int i=0; i<16; i++)4.{5.char pBuff[2];6.sprintf(pBuff,"%02x",output[i]);7.textshow = textshow + pBuff;8.}7. string to BYTE [] //其中#define unsigned char BYTE[cpp] view plaincopyprint?1.////-------------------------------------------2.//// 将字符串类型转换为BYTE数组3.////-------------------------------------------4.void CryptClient::HexStrToByte(string str_arr, BYTE byte_a rr[24])5.{6.unsigned char ch1;7.unsigned char ch2;8.int k = 0;9.for (int i=0; i<str_arr.length()-1; i = i+2)10.{11.ch1 = str_arr.at(i);12.ch2 = str_arr.at(i+1);13.if (ch1>=48 && ch1 <= 57)14.{15.ch1 &= 0x0F;16.}17.if (ch1>='A' && ch1 <='F')18.{19.ch1 &= 0x0F;20.ch1 += 0x09;21.}22.if (ch2 >= 48 && ch2 <= 57)23.{24.ch2 &= 0x0F;25.}26.if (ch2>='A' && ch2 <='F')27.{28.ch2 &= 0x0F;29.ch2 += 0x09;30.}31.ch1<<=4;32.byte_arr[k] = ch1 + ch2;//int类型转byte类型,有问题33.k++;34.}35.}[cpp] view plaincopyprint?1.////-------------------------------------------2.//// 将字符串类型转换为BYTE数组3.////-------------------------------------------4.void CryptClient::HexStrToByte(string str_arr, BYTE byte_ar r[24])5.{6.unsigned char ch1;7.unsigned char ch2;8.int k = 0;9.for (int i=0; i<str_arr.length()-1; i = i+2)10.{11.ch1 = str_arr.at(i);12.ch2 = str_arr.at(i+1);13.if (ch1>=48 && ch1 <= 57)14.{15.ch1 &= 0x0F;16.}17.if (ch1>='A' && ch1 <='F')18.{19.ch1 &= 0x0F;20.ch1 += 0x09;21.}22.if (ch2 >= 48 && ch2 <= 57)23.{24.ch2 &= 0x0F;25.}26.if (ch2>='A' && ch2 <='F')27.{28.ch2 &= 0x0F;29.ch2 += 0x09;30.}31.ch1<<=4;32.byte_arr[k] = ch1 + ch2;//int类型转byte类型,有问题33.k++;34.}35.}8. BYTE[] to string //上个过程的逆过程[c-sharp] view plaincopyprint?1.////-------------------------------------------2.//// 将BYTE数组转换为字符串类型3.////-------------------------------------------4.string* byteToHexStr(BYTE byte_arr[], int arr_len)5.{6.string* hexstr = new string;7.for(int i=0; i<arr_len; i++)8.{9.char hex1;10.char hex2;11.int value = byte_arr[i];12.int v1 = value/16;13.int v2 = value % 16;14.//将商转换为字母15.if (v1>=0 && v1<=9)16.{17.hex1 = (char)(48 + v1);18.}19.else20.{21.hex1 = (char)(55 + v1);22.}23.//将余数转成字母24.if (v2>=0 && v2<=9)25.{26.hex2 = (char)(48 + v2);27.}28.else29.{30.hex2 = (char)(55 + v2);31.}32.//将字母连成一串33.*hexstr = *hexstr + hex1 + hex2;34.}35.return hexstr;36.}[c-sharp] view plaincopyprint?1.////-------------------------------------------2.//// 将BYTE数组转换为字符串类型3.////-------------------------------------------4.string* byteToHexStr(BYTE byte_arr[], int arr_len)5.{6.string* hexstr = new string;7.for(int i=0; i<arr_len; i++)8.{9.char hex1;10.char hex2;11.int value = byte_arr[i];12.int v1 = value/16;13.int v2 = value % 16;14.//将商转换为字母15.if (v1>=0 && v1<=9)16.{17.hex1 = (char)(48 + v1);18.}19.else20.{21.hex1 = (char)(55 + v1);22.}23.//将余数转成字母24.if (v2>=0 && v2<=9)25.{26.hex2 = (char)(48 + v2);27.}28.else29.{30.hex2 = (char)(55 + v2);31.}32.//将字母连成一串33.*hexstr = *hexstr + hex1 + hex2;34.}35.return hexstr;36.}9. char* to QString[cpp] view plaincopyprint?1.QString keyall1;2.char keych1[MAX_NUM];3.keyall1 = QString(QLatin1String(keych1)); [cpp] view plaincopyprint?1.QString keyall1;2.char keych1[MAX_NUM];3.keyall1 = QString(QLatin1String(keych1));。

SqlServer数据类型、C#SqlDbType对应关系及转换

SqlServer数据类型、C#SqlDbType对应关系及转换

SqlServer数据类型、C#SqlDbType对应关系及转换 1// SqlDbType转换为C#数据类型2public static Type SqlType2CsharpType(SqlDbType sqlType)3 {4switch (sqlType)5 {6case SqlDbType.BigInt:7return typeof(Int64);8case SqlDbType.Binary:9return typeof(Object);10case SqlDbType.Bit:11return typeof(Boolean);12case SqlDbType.Char:13return typeof(String);14case SqlDbType.DateTime:15return typeof(DateTime);16case SqlDbType.Decimal:17return typeof(Decimal);18case SqlDbType.Float:19return typeof(Double);20case SqlDbType.Image:21return typeof(Object);22case SqlDbType.Int:23return typeof(Int32);24case SqlDbType.Money:25return typeof(Decimal);26case SqlDbType.NChar:27return typeof(String);28case SqlDbType.NText:29return typeof(String);30case SqlDbType.NVarChar:31return typeof(String);32case SqlDbType.Real:33return typeof(Single);34case SqlDbType.SmallDateTime:35return typeof(DateTime);36case SqlDbType.SmallInt:37return typeof(Int16);38case SqlDbType.SmallMoney:39return typeof(Decimal);40case SqlDbType.Text:41return typeof(String);42case SqlDbType.Timestamp:43return typeof(Object);44case SqlDbType.TinyInt:45return typeof(Byte);46case SqlDbType.Udt://⾃定义的数据类型47return typeof(Object);48case SqlDbType.UniqueIdentifier:49return typeof(Object);50case SqlDbType.VarBinary:51return typeof(Object);52case SqlDbType.VarChar:53return typeof(String);54case SqlDbType.Variant:55return typeof(Object);56case SqlDbType.Xml:57return typeof(Object);58default:59return null;60 }61 }1// sql server数据类型(如:varchar)2// 转换为SqlDbType类型3public static SqlDbType SqlTypeString2SqlType(string sqlTypeString)4 {5 SqlDbType dbType = SqlDbType.Variant;//默认为Object67switch (sqlTypeString)8 {9case"int":10 dbType = SqlDbType.Int;11break;12case"varchar":13 dbType = SqlDbType.VarChar;14break;15case"bit":16 dbType = SqlDbType.Bit;17break;18case"datetime":19 dbType = SqlDbType.DateTime;20break;21case"decimal":22 dbType = SqlDbType.Decimal;23break;24case"float":25 dbType = SqlDbType.Float;26break;27case"image":28 dbType = SqlDbType.Image;29break;30case"money":31 dbType = SqlDbType.Money;32break;33case"ntext":34 dbType = SqlDbType.NText;35break;36case"nvarchar":37 dbType = SqlDbType.NVarChar;38break;39case"smalldatetime":40 dbType = SqlDbType.SmallDateTime;41break;42case"smallint":43 dbType = SqlDbType.SmallInt;44break;45case"text":46 dbType = SqlDbType.Text;47break;48case"bigint":49 dbType = SqlDbType.BigInt;50break;51case"binary":52 dbType = SqlDbType.Binary;53break;54case"char":55 dbType = SqlDbType.Char;56break;57case"nchar":58 dbType = SqlDbType.NChar;59break;60case"numeric":61 dbType = SqlDbType.Decimal;62break;63case"real":64 dbType = SqlDbType.Real;65break;66case"smallmoney":67 dbType = SqlDbType.SmallMoney;68break;69case"sql_variant":70 dbType = SqlDbType.Variant;71break;72case"timestamp":73 dbType = SqlDbType.Timestamp;74break;75case"tinyint":76 dbType = SqlDbType.TinyInt;77break;78case"uniqueidentifier":79 dbType = SqlDbType.UniqueIdentifier;80break;81case"varbinary":82 dbType = SqlDbType.VarBinary;83break;84case"xml":85 dbType = SqlDbType.Xml;86break;87 }88return dbType;89 }1// sql server中的数据类型,转换为C#中的类型类型2public static Type SqlTypeString2CsharpType(string sqlTypeString)3 {4 SqlDbType dbTpe = SqlTypeString2SqlType(sqlTypeString);56return SqlType2CsharpType(dbTpe);7 }89// 将sql server中的数据类型,转化为C#中的类型的字符串10public static string SqlTypeString2CsharpTypeString(string sqlTypeString)11 {12 Type type = SqlTypeString2CsharpType(sqlTypeString); 1314return ;15 }。

winform简述枚举类型的使用方法

winform简述枚举类型的使用方法

在WinForm中,枚举类型主要用于定义一组具有特定意义的常量。

使用枚举类型可以提高代码的可读性和可维护性。

以下是WinForm中枚举类型的使用方法:1. 定义枚举类型:在WinForm项目中,右键点击项目名称,选择“添加”->“类”,然后输入枚举类型的名称,例如“Color”。

接下来,在类视图中,右键点击新创建的枚举类型,选择“添加”->“枚举”,然后输入枚举成员的名称和值。

```csharppublic enum Color {Red,Green,Blue,Yellow}```2. 使用枚举类型:在代码视图中,可以直接使用枚举类型定义变量,如:```csharpColor color;```然后,可以通过枚举成员的名称或值来访问枚举成员,如:```csharpConsole.WriteLine(color.Red); // 输出Red```3. 枚举类型的转换:WinForm中支持将枚举类型转换为字符串、整数等类型。

例如,将枚举成员转换为字符串:```csharpstring colorString = color.ToString(); // 输出"Red"```4. 枚举类型的嵌套:在WinForm中,可以创建嵌套的枚举类型。

嵌套的枚举类型通常用于定义具有层次关系的常量组。

例如,定义一个名为“Direction”的嵌套枚举类型:```csharppublic enum Direction {Up,Down,Left,Right}public enum Color {Red,Green,Blue,Yellow}```然后,可以在代码中使用嵌套枚举类型,如:```csharpDirection direction;```5. 枚举类型的扩展:在WinForm中,可以对枚举类型进行扩展,以便在枚举成员上添加额外的方法或属性。

例如,扩展“Color”枚举类型:```csharppublic enum Color {Red,Green,Blue,Yellow}public class ColorExtension {public static string GetColorName(Color color) {switch (color) {case Color.Red:return "红色";case Color.Green:return "绿色";case Color.Blue:return "蓝色";case Color.Yellow:return "黄色";default:return "";}}}```然后,可以在代码中使用扩展的方法,如:```csharpColor color = Color.Red;string colorName = ColorExtension.GetColorName(color); // 输出"红色" ```。

CSharp16进制、字符串、字节数组之间转换

CSharp16进制、字符串、字节数组之间转换

///<summary>///字符串转16进制字节数组///</summary>///<param name="hexString"></param>///<returns></returns>private static byte[] strToToHexByte(string hexString){hexString = hexString.Replace(" ", "");if ((hexString.Length % 2) != 0)hexString += " ";byte[] returnBytes = new byte[hexString.Length / 2];for (int i = 0; i < returnBytes.Length; i++)returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);return returnBytes;}///<summary>///字节数组转16进制字符串///</summary>///<param name="bytes"></param>///<returns></returns>public static string byteToHexStr(byte[] bytes){string returnStr = "";if (bytes != null){for (int i = 0; i < bytes.Length; i++){returnStr += bytes[i].ToString("X2");}}return returnStr;}///<summary>///从汉字转换到16进制///</summary>///<param name="s"></param>///<param name="charset">编码,如"utf-8","gb2312"</param>///<param name="fenge">是否每字符用逗号分隔</param>///<returns></returns>public static string ToHex(string s, string charset, bool fenge){if ((s.Length % 2) != 0){s += " ";//空格//throw new ArgumentException("s is not valid chinese string!");}System.Text.Encoding chs =System.Text.Encoding.GetEncoding(charset);byte[] bytes = chs.GetBytes(s);string str = "";for (int i = 0; i < bytes.Length; i++){str += string.Format("{0:X}", bytes[i]);if (fenge && (i != bytes.Length - 1)){str += string.Format("{0}", ",");}}return str.ToLower();}///<summary>///从16进制转换成汉字///</summary>///<param name="hex"></param>///<param name="charset">编码,如"utf-8","gb2312"</param>///<returns></returns>public static string UnHex(string hex, string charset){if (hex == null)throw new ArgumentNullException("hex");hex = hex.Replace(",", "");hex = hex.Replace("\n", "");hex = hex.Replace("\\", "");hex = hex.Replace(" ", "");if (hex.Length % 2 != 0){hex += "20";//空格}// 需要将 hex 转换成 byte 数组。

Csharp基础笔记知识点整理

Csharp基础笔记知识点整理

Csharp基础笔记知识点整理/** @version: V.1.0.0.1* @Author: fenggang* @Date: 2019-06-16 21:26:59* @LastEditors: fenggang* @LastEditTime: 2019-06-18 01:31:12* @Descripttion: csharp 基础笔记*/基础知识介绍: using 关键字 1、⽤来引⽤.NET 框架类库中的资源 2、通常在程序⽂件的开头使⽤ 3、如果程序中需要多种资,可以使⽤多次using System 命名空间 1、system 命名空间提供了构建应⽤程序所需的系统功能访问 class 类 1、在C#或其他⾯向对象语⾔中,需要编写类 2、使⽤关键字 class 定义⼀个类,类的内容放在⼀对{}中 ⽰例: class HelloWord { // 类内容 } Main ⽅法 1、Main ⽅法是应⽤程序的⼊⼝点,编译器将由该处开始执⾏程序 2、⽅法体也放在⼀对{}中 3、每个 C# 的应⽤程序都必须包含 Main ⽅法 4、static 表⽰ Main ⽅法是⼀个全局⽅法 5、void 表⽰ Main ⽅法没有任何返回值,即返回时空 6、参数放在⼩括号中定义,⼩括号中没有内容证明没有任何参数 语句 1、语句之间⽤(";")分号分割,编译器通过分号来区分多个语句 2、使⽤⼤括号{}标识莫格代码块的开始和结束,从⽽可以对语句进⾏组合,⼤括号必须承兑匹配 3、数据语句:Console.WriteLine("Hello Word"); 4、Hello Word 在屏幕上显⽰的内容 5、Console 代表标准输出设备到屏幕,它属于System命名空间 6、WriteLine ⽅法是Console类⽅法,访问类或对象的⽅法使⽤点取符来完成 7、字符串⽤双引号"" 8、字符串 "Hello Word" 是WiteLine⽅法参数,表⽰屏幕输出的内容 代码规范格式 1、良好、清晰的组织代码 2、提⾼代码可读性,易于代码维护 3、缩进 4、区分⼤⼩写 5、忽略空⽩区 6、注释 注释 1、单⾏注释 // 2、多⾏注释 /** */ 和 /* */ csharp 数据类型 类型 .NET Framework 类型 1、bool System.Boolean 2、byte System.Byte 3、sbyte System.SByte 4、char System.Char 5、decimal System.Decimal 6、double System.Double 7、float System.Single 8、int System.Int32 9、uint System.Uint 10、long System.Int64 11、ulong System.Uint64 12、object System.Object 13、short System.Int16 14、ushort System.Uint16 15、string System.string C# 的内置数据类型⼤致划分 逻辑型: bool ⽂本型: char, string 整型: byte, sbyte, short, ushort, int, uint, long, ulong 浮点型: float, double, decimal 声明变量 作⽤:通过声明变量,可以在内存中为该变量申请存储空间 语法:类型变量名; 初始化变量 作⽤:给变量分配初始值 语法:变量名 = 初始值; 初始值注意事项: bool 只有两个值: true 或 false char 表⽰单个 Unicode 字符,⽤''[单引号]表⽰ 特殊字符和转义字符 有些特殊字符⽆法直接放在引号中,此时要表⽰这些字符,必须使⽤转义符 字符名称 转义符 反斜线 \\ 退格 \b 回车 \r 双引号 \" ⽔平制表符 \t 垂直制表符 \v 换⾏ \n 单引号 \' 声明并初始化字符串 1、字符串表⽰任意长度的 Unicode 字符序列 2、字符串使⽤""表⽰ 3、可以使⽤转义字符或 verbatim 字符 常量创建以及使⽤ 1、常量⼀旦被初始化,其数值保持不变的变量 2、常量通常表⽰有意义固定数值,如圆周率 3、声明常量是必须对其赋值 语法: const 类型常量名 = 数值 枚举 1、枚举类型是⼀组被命名额数字常量(枚举是⼀组有限的值), 即:⼀个枚举类型中包含了多个相关的数字常量,且每个常量都被赋予了⼀个容易记忆的 2、枚举关键字 enum 类型转换 1、相同的数据类型可以混合运算,运算中,不同的数据类型先被⾃动转为相同的数据类型, 然后在进⾏运算,转换时低容量的数据类型像⾼容量数据类型转换 2、由低到⾼排列数据类型 byte-->short-->int-->long-->float-->double 3、将⼩容量数据类型转换成⼤容量数据类型时,系统⾃动完成,成为隐式转换 4、将⼤容量数据类型转换成⼩容量数据类型时,必须使⽤强制类型转换 表达式 1、运算符号 常见的运算符号 ⽰例 增/减 ++ -- 算术 * / % + - 关系 < > <= >= 相等 == != 条件 && || ?: 赋值 = *= /= %= += -= <<= >>= &= ^= |= 2、运算符的优先级,个⽇常⽣活中计算⽅式⼀样(先乘除再加减) 3、做结合和有结合 所有⼆元运算符都是做结合的 a=b=c 赋值运算符和条件运算符都是有结合的 a:b?a:c>d?c:d; 条件语句 1、条件语句可以根据布尔表达式值,有选择性的执⾏程序的某⼀部分 2、在 C# 中的条件语句有 if 和 switch 两种 3、if 适合两个分⽀判断 if( 布尔表达式 ) { 语句块1; }else{ 语句块2; } 4、else 部分可选 5、if...else 可以嵌套 6、运算符 (?:) 是 if...else 的缩略形式 7、switch 适合多个分⽀判断 switch (待检测表达式) { case value1: 语句; break; case value2: 语句; break; ... default: break; } switch 语句的使⽤⽅法 1、表达式中求值的类型可以是整型、字符型、字符串、枚举类型 2、计算表达式的值并进⾏等值匹配,若表达式的值与某个 case 标记中的值相等,则执权转到该 case 标记后的语句 3、break 跳出整个 switch 每个 case 中必须使⽤ break, C# 不允许从⼀个 case 进⼊下⼀个 case, 称为不可贯穿性 4、若没有任何⼀个 case 标记的⾄于表达式匹配,则转到 default 语句中,若没有定义 default, 则结束 switch 判断 5、default 是可选的,但通常需要定义,以捕获没有被任何 case 处理的值, 其作⽤相当于 else 循环语句 1、借助循环机制,编译器可以重复执⾏⼀块代码,直⾄满⾜某个条件为⽌,从⽽避免重复输⼊相同的代码⾏ 2、C# 提供的循环机制有: for 循环 while 循环 do 循环 for 循环 1、for 循环⽤于将代码块执⾏固定的次数 for ( 初始化表达式; 循环条件; 迭代表达式 ) { 循环语句: } 2、先执⾏初始化表达式,此部分只执⾏⼀次 3、判断条件表达式,若满⾜条件则执⾏循环体,否则跳出 for 循环 4、每次循环语句执⾏完后要执⾏⼀次迭代,并重新判断条件 while 循环 1、与 for 循环类似,也是预测试循环,即⾸先判断循环条件,若满⾜则执⾏循环;否则不执⾏循环 while ( 循环条件 ) { 循环语句; } 2、当不知道煦暖执⾏的次数时,可以使⽤ while 循环 do while 循环 1、先执⾏循环语句,在进⾏循环条件测试,所以循环语句⾄少执⾏⼀次,成为测试循环 2、do while 循环先循环后判断,⽐ while 循环多执⾏⼀次 do { 循环语句; } while ( 循环条件 ); 特殊的循环控制 1、continue 关键字终⽌当次循环,开始下⼀次迭代和循环(并不终⽌整个循环) 2、break 关键字跳出和中⽌整个循环。

[C#]CSharp基本语法

[C#]CSharp基本语法⼀、基础1.规范:除常量外,所有变量⽤驼峰命名⽅式,其它⽤帕斯卡命名⽅式.2.编译:⾸先由csc.exe将cs⽂件编译成MSIL.当双击exe的时候,会由clr的jit(just in time)编译器再次编译成cpu指令. csc位置(如):C:\Windows\\Framework\v4.0.30319\csc.execsc命令(如):csc /t:library acme.cs(编译成类库) csc /r:acme.dll test.cs(引⽤acme.dll后编译)ngen位置(如):C:\Windows\\Framework\v4.0.30319\ngen.exe(可实现jit效果)ngen命令(如):ngen install D:\SystemTool\HelloWorld.exe (备注:exe⽅式)3.⾯向对象(Object-Oriented ⾯向对象编程:Object-Oriented-Programming):类是抽象的,对象是具体的.析构函数:~ClassName(){}.实际是重写基类的Finalize()⽅法4.变量:成员变量:默认有⼀个初始值.string->null,int->0,bool->false局部变量:使⽤前必须赋值.5.封装:a.字段封装成属性b.⽅法参数封装成类c.⽅法重⽤d.封装成类库6.继承:单根性,传递性构造函数不继承.7.多态:a.vitual和override⽅法可以给重写b.abstract⽅法c.接⼝8.访问修饰符:成员访问修饰符:private:当前类内protected:当前类内和⼦类内internal:当前程序集内protected internal:当前程序集内或当前类内和⼦类内public:所有都可以命名空间下的访问修饰符:只允许使⽤public和internal,但是微软内部使⽤private.9.静态:静态作为与多态区别的.stati修饰.静态类:不能被实例化,成员都为静态成员,可以有const常量静态成员:静态成员在赋初始值的时候,是在静态构造函数中赋值的.静态构造函数:在类第⼀次使⽤前只调⽤⼀次.不能有修饰符,不能重载.10.值类型与引⽤类型值传递与引⽤传递:值类型:int double struct等隐式继承ValueType.引⽤类型:string 类数组等隐式继承Object.值传递:默认就是值传递.引⽤传递:在⽅法参数中加上ref就是引⽤传递.11.SOLID:single:单⼀职责open:开发封闭lis:⾥⽒替换interface:接⼝分离depend:依赖倒置12.接⼝:a.接⼝⾥只能定义⽅法.b.接⼝的成员不能有修饰符.默认为public13.实现接⼝和显⽰实现接⼝:⼀个类同时实现接⼝和显⽰实现接⼝。

CSharp_将数字转换为中文描述

将数字转换为英文描述不考虑负数情况,将数字转换为中文描述。

比如24={二十四}102={一百零二}1005={一千零五}1012={一千零一十二}.程序源代码:using System;using System.Collections.Generic;using System.Text;using System.Runtime.InteropServices;using System.Data;using System.Data.SqlClient;using System.IO;namespace RemainerMaths{class Program{//将数字转换为中文描述//如:24二十四 102:一百零二//1005:一千零五 1012:一千零一十二static void Main(string[] args){int[] arr ={0,1,2,11,15,80,99,100,106,110,118,185,199,900,999,1000,1002,1011,4025,6101,9999,10000,30005,110025,860123,8888888,99999999,100000000,1200000008,1400000012,1600000110,1700102345,1824765421};for (int i = 0; i < arr.Length; i++) //右对齐,长度凑满10位{Console.WriteLine("{0,10}={{{1}}}", arr[i],NumberToChineseString(arr[i]));}Console.ReadLine();}///<summary>///把数字转换为中文描述///如132 对应一百三十二/// 10003 对应一万零三///</summary>///<param name="number"></param>///<returns></returns>static string NumberToChineseString(int number) {if (number < 0) //负数暂不考虑return"";if (number < 20) //0到之间的数{switch (number){case 0:return"零";case 1:return"一";case 2:return"二";case 3:return"三";case 4:return"四";case 5:return"五";case 6:return"六";case 7:return"七";case 8:return"八";case 9:return"九";case 10:return"十";case 11:return"十一";case 12:return"十二";case 13:return"十三";case 14:return"十四";case 15:return"十五";case 16:return"十六";case 17:return"十七";case 18:return"十八";case 19:return"十九";default:return"";}}if (number < 100) //20到之间的数{if (number % 10 == 0) //20,30,40...90这些数{return string.Format("{0}十", NumberToChineseString(number / 10));}else//21,58,99这些数{return string.Format("{0}十{1}",NumberToChineseString(number / 10),NumberToChineseString(number % 10));}}if (number < 1000) //100到之间的数{if (number % 100 == 0){return string.Format("{0}百", NumberToChineseString(number / 100));}else{//如果十位是,返回零,而不是零十。

C语言中的类型转换-1L1UL

C语言中的类型转换-1L1ULC语言中的类型转换C语言中的类型转换有两种,自动与强制。

它们都有几种情况,如不同长度的转换;不同类型的转换;还有无符号与有符号数之间的转换。

关键是两点,即长度不同时如何转换,在有无符号数参与时如何转换。

一般的处理方式是长变短时作一个简单的截短操作,内存的对齐方式影响这个结果。

短的变长时,与符号有关,如果是有符号数,则有两种可能,符号扩展或简单地提升(即高位补0)。

这个C标准没有定义,取决于编译器。

所以,在将短的数据转换为长的数据时,最好是用强制的转换。

无符号数就没关系了,结果是一样的。

1.强制类型转换具体形式如下:(类型)表达式这个出错的机会比较小一点,因为由程序员自己控制。

但要注意的,在对指针转换时,如果将一个指向一个较小内存单元的指针转换为一个指向较大内存单元的指针,就会破坏其它内存单元的数据。

这个在自动转换中也有,故在下面一起描述。

强制转换一般是在将一个空指针赋给一个在类型的指针时的操作,如在malloc()操作时。

2.自动类型转换这是最容易出错的,因为C语言对类型的检查比较少,这样设计的好处是给程序员提供编程上的方便,但任何事情都有两面性,自动类型转换有不少副作用。

我们先来看一下自动转换在什么时候发生:1)表达式求值2)赋值3)函数调用这几种转换的细节都可以参考《C程序设计语言》(The C Programming Language, BrianW.Kernighan, Dennis M.Ritchie)一是有无符号数参与的表达式计算C语言中对这个没有规定,取决于实现。

看下面这个例子:#include <stdio.h>int main(void){long a;unsigned short b;unsigned long c, d;short e;a = -1L;b = 1U;d = a + b;printf("a = %dL, b = %uU, d = %uUL, a>b = %d\n",a, b, d, a > b);a = -1L;c = 1UL;d = c + a;printf("a = %dL, c = %uUL, d =%uUL, a>c = %d\n", a, c, d, a > c);e = -1;c = 1UL;d =e + c;printf("e = %d, c = %uUL, d =%uUL, e>c = %d\n", e, c, d, e> c);}运行结果如下(在我的环境中compaq Tru64, cc)a = -1L,b = 1U, d = 0UL, a>b = 0a = -1L, c = 1UL, d =0UL, a>c = 1e = -1, c = 1UL, d =0UL, e>c = 1我们不难发现,在比较操作中,将无符号的短整数扩展为了有符号的长整型。

CSharp_02_变量与常量

☺比如表示人的年龄,byte足够了
考虑个体差异时要大度
编程规范---命名规则
用有意义的,描述性的词语来命名
☺int a 没有意义 ☺Int Age 意义不明确 ☺int studentAge有意义
有人问
☺int xueshengnianling行吗?
知识线2----编程规范
知识点1: 给变量咋命名?有意义、能描述!
例2-3 将数值的字符串表示形式 using System; 转换为 BigInteger using System.Numerics;
class Program { static void Main(string[] args) { string positiveString = "91389681247993671255432112000000"; string negativeString = "-70315837410896312071002088037140000"; BigInteger posBigInt = 0; BigInteger negBigInt = 0; posBigInt = BigInteger.Parse(positiveString); Console.WriteLine(posBigInt); negBigInt = BigInteger.Parse(negativeString); Console.WriteLine(negBigInt); BigInteger sum = posBigInt + negBigInt; Console.WriteLine(sum); } }
编程规范---命名大小写
命名规则。
☺Pascal----所有单词首字母大写。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Csharp的类型转换
一.强制转换(int):
(int)表示显式强制转换,是一种类型转换。

当我们从int 到long、floa、double、decimal时,都可以使用隐式转换,而当我们从long到int(以及其他类似的转换是)就需要使用显式转换,否则会产生编译错误。

String stringval=”123”;
Int i =(int)stringval; //是错误的,用()不能是string 直接转换为int
而且(int)stringval;也是错误的;
String stringval;
Int i= 123;
Stringval=(int)i;//也是错误的,用()不能使int变成string
①该转换方式主要用于数字的转换
②该转换对浮点数是,会失去起精度(即直接省略小数部分)
③用来处理char类型的值,会返回ASCⅡ的值
二.Int.Parse()
将数字类型的字符串转换为int。

括号内只能是字符串,该函数只能处理字符串,而且字符串的内容只能在int可表示的范围内。

若参数string的值是:
①是nul,抛出异常;
②是“”(空/string.empty),抛出异常;
③string的格式不是数字类型的,则抛出异常:字符串格式不对;
④若超出int的表示范围([MinValue,MaxValue]),抛出异常
Int.pause(4.5);//这届报错:字符串的格式不正确
Double.parse(”4.5”);//正确
Double.parse(”4”);//正确
格式:
*.parse() sbyte——>long 和float——>decimal
注意:没有string.Pause()
三.Int.TryParse(string s , out int result)
该方式也是将数字内容的字符串转为int类型,但是该方式比int.Parse优越的地方,就是它不会出现异常。

如果转换成功该函数返回true,如果转换失败该函数返回false。

很明显,最后一个参数为输出值,如果转换失败,输出值为0;如果转换成功,则输出相应的值。

四.Convert.T oInt()
该方式不仅可以将字符串转为int类型,还可以将其它类型的值转成int类型。

变量若为object或string类型,当其值为null时,会传回0,不会造成程序错误,但是若此string 类型的值为string.Empty,在转型成int时,仍会造成程序错误。

注:
①该方式同强制转换一样,不能用来处理char类型,否则传回的是ASCII代码
②1.convert.toint32(“4.5”);//错误,会抛出异常,字符串格式不对。

2.convert.toint32(4.5);//正确,
③用convert.toint32()来处理浮点数的时候:原则是“四舍六入五看奇偶”
附:Convert.ToInt32与int.Parse较为类似,实际上Convert.T oInt32内部调用了int.Parse:
四.个人总结
①Convert.ToInt32的参数比较多,Int.Parse只能转换string
类型的.
②Parse就是把String转换成int,char,double....等,也就是
*.Parse(string) 括号中的一定要是string.
③(int) 属cast 转换,只能将其它数字类型转换成int 类型,它不能转换字符串,比如下例就会失败:
string v = "1"; int n = (int)v;。

相关文档
最新文档