经过这几天的学习,真的有点觉得以前C学的太不好现在学C#也不顺畅,虽然很多东西都似曾相识,但是就是还得看好几遍才能记得住,而且现在都是简单的东西,还没有看到重载等稍微难点的地方。应该好好努力了,昨天忙完所有事情都十一点多了,还被学姐骂的不行不行的,就早点休息了,真是应该每天都能看一点的,这样还能记得深刻一点,每天都能学点东西还能有点成就感。据说养成一个习惯需要至少23天,我真的还想试一下是不是真的,其实写博客的目的就是督促一下自己,每天给自己来点压力,不要像大一的时候一样一事无成,成天忙那些所谓的学生工作,付出的太少太少,希望找到高中时的状态,周围的环境都不是理由,时间紧也不是理由,现在唯一让我感到很烦的就是导员的博士论文,我学了好几年的理科,大学学的还是工科,成天还要写思想政治教育的稿子,想想都有点不值得,不过只能在自己的博客里吐槽一下了,毕竟要导员帮忙的地方太多了。这样是不是太势利了呢?我也常常在想,直接撂挑子不干算了,爱咋咋地。但是想想已经付出了那么多,到今年12月份也就解放了,也就忍了,真心希望以后不会有这种奇葩的任务了,自己做点自己想做的、想学的,摞摞代码、学学单片机、搞搞嵌入式就挺好。不说废话了,还是说说今天的学习吧!突然好多感慨。。。但是,我的博客我做主,哈哈哈哈。

今天自己看了点转义字符那块,和C差不多,基本一样,也就不赘述了,就是多了个@的那个功能,变量名的第一个字符必须是字母、下划线或数字。变量的命名方面,主要有两种主流的命名方式,一种是camelCase方式,举几个例子就明白了,age,firstName,timeOfDeath(这个名字咋这么吓人呢),就是第一个字母不大写,其他出现的单词首字母都要大写;还有一种是PascalCase方式,看名字就能看得出来,比上一个命名方法多了首字母大写,好像我们老师以前讲C语言的时候说过一种匈牙利命名法和第二种挺像的,不知道是不是一种。对于这两种命名方式,官方给出的说法是,对于简单的变量,用第一种比较好,对于复杂的,就用第二种,不过个人还是比较倾向第二种。

就下来就说下@的用法了,可以有效的简化代码,减少转义字符的使用,使代码更加简洁。在这里举个例子应该就能很明白的说清楚了,不用@的话对于以下字符串“C:\\MyDir\\Myfile.doc”就可以简化成@“C:\Mydir\Myfile.doc”当然使用这种方法也有意外,比如说在字符串里本身存在双引号的话还是必须要转义,以免结束字符串。接下来再说一下一个基本的东西,数据类型的转换:隐式转换和显式转换,所谓隐式转换,就是悄悄的转换,不需要做任何工作,不需要任何的代码,这里就不多说了,以后应该不会在这地方卡壳。重要的是显式转换,在明确要求编译器把数值类型进行转换时,就是在执行显式转换。简单的显示转换格式是<(destinationType)sourceType>,这样就将sourceVal值的数据类型就变成了前面括号里的情况。代码还是要摞起来

byte destinationVar;

short sourceVar = 7;

destinationVal=(byte)sourceVar ;

Console.WriteLine("sourceVar  val:{0}",sourceVar );

Console.WriteLine("destinationVar  val:{0}",destinationVar );

就可以得到

sourceVar  val:7

destinationVar  val::7

虽然代码很简单,还是要敲出来,印象能深刻一些,毕竟在打基础。但是如果数据过大就是有溢出的情况,比如说上例中的short类型值是281,结果就会是25,进行了循环,因为byte类型最多能够表达的数就是255.所以在数据类型转换的时候要注意不同数据类型的范围大小。为了防止溢出,可以添加check函数来进行溢出检查,如果溢出就会有程序崩溃的提示。除了这一种方式,还有另一种稍微复杂一点的转换,运用convert进行转换。不说其他,直接上代码:

static void Main(string[] args)        //和java真他妈像

{

  short shortResult,shortVal=4;

  int integerVal=67;

  long longResult;

  float floatVal=10.5F;

  double doubleResult,doubleVal=99.999;

  string stringResult,stringVal="17";

  bool boolVal=true;

  Console.WriteLine("Variable Conversion Examples\n");

  doubleResult=floatVal*shortVal;

  Console.WriteLine("Implicit,->double:{0}*{1}->{2}",floatVal,shortVal,doubleResult);

  shortResult=(short)floatVal;

  Console.WriteLine("Explicit,->short:{0}->{1}",floatVal,shortResult);

  stringResult=Convert.ToString(boolVal)+Convert.ToString(doubleVal);

  Console.Write("Explicit,->string:\"{0}\"+\"{1}\"->{2}",boolVal,doubleVal,stringResult);

  longResult=integerVal+Conver.ToInt64(stringVal);

  Console.WriteLine("Mixed,   ->long:  {0}+{1}->{2}",integerVal,stringVal,longResult);

}

码完这段让人吐血的代码,好无聊,但是该练习的还是要练习,这点逃不了。

接下来就说复杂的变量类型之一:枚举。

直接上代码:

enum<typeName>      //定义枚举

{

  <value1>

  <value2>

  ...

  <valuen>

}

<typeName><varName>;       //声明新变量

<varName>=<typeName>.<value>;       //赋值

还可以添加类型:

enum<typeName> :<underlyingType>     //定义枚举,并且在后面设置存储类型

{

  <value1>

  <value2>

  ...

  <valuen>

}

在默认情况下,每个值都会根据定义的顺序自动赋给对应的基本类型值。也就是说,value1的值是0,value2的值是1等等。也可以重写这个过程:

enum<typeName> :<underlyingType>     //定义枚举,并且在后面设置存储类型

{

  <value1>=<actualVal1>

  <value2>=<actualVal2>

  ...

  <valuen>=<actualValn>

}

还可以使用一个值作为另一个枚举值的基础值,为多个枚举指定相同的值:

enum<typeName> :<underlyingType>     //定义枚举,并且在后面设置存储类型

{

  <value1>=<actualVal1>

  <value2>=<value1>

  ...

  <valuen>=<actualValn>

}

没有赋值的任何职都会自动获得一个初始值,这里使用的值是从比上一个明确声明的值大1开始的序列。例如上例中<value3>的值是<value1>+1.

以循环的方式赋值可能会产生错误,例如:

enum<typeName> :<underlyingType>     //定义枚举,并且在后面设置存储类型

{

  <value1>=<value2>

  <value2>=<value1>

}

枚举的强制数据类型转换:

directionString=MyDirection.ToString();   等价于

   directionString=Convert.ToString(MyDirection);

其中MyDirection是枚举类型的数据变量,directionString是string类型的数据变量。

把string转换为枚举值,有特定的命令Enum.Parse(),用法如下:

(enumrationType)Enum.Parce(typeof(enumrationType),enumrationValueString);

具体的应用如下

string myString="north";

  orientation myDirection=(orientation)Enum.Parse(typeof(orientation),myString);     //其中orientation为枚举类型

刚才系统崩溃了,吓死宝宝了,幸亏有自动保存。。。。。

C#学习第三天的更多相关文章

  1. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  2. 从零开始学习jQuery (三) 管理jQuery包装集

    本系列文章导航 从零开始学习jQuery (三) 管理jQuery包装集 一.摘要 在使用jQuery选择器获取到jQuery包装集后, 我们需要对其进行操作. 本章首先讲解如何动态的创建元素, 接着 ...

  3. 前端学习 第三弹: JavaScript语言的特性与发展

    前端学习 第三弹: JavaScript语言的特性与发展 javascript的缺点 1.没有命名空间,没有多文件的规范,同名函数相互覆盖 导致js的模块化很差 2.标准库很小 3.null和unde ...

  4. Android Animation学习(三) ApiDemos解析:XML动画文件的使用

    Android Animation学习(三) ApiDemos解析:XML动画文件的使用 可以用XML文件来定义Animation. 文件必须有一个唯一的根节点: <set>, <o ...

  5. 三、Android学习第三天——Activity的布局初步介绍(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 三.Android学习第三天——Activity的布局初步介绍 今天总结下 ...

  6. JavaWeb学习总结(三)——Tomcat服务器学习和使用(二) 包含https 非对称秘钥 NB

    JavaWeb学习总结(三)--Tomcat服务器学习和使用(二) 一.打包JavaWeb应用 在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命 ...

  7. MyEclipse Spring 学习总结三 SpringMVC

    MyEclipse Spring 学习总结三 SpringMVC 一.SpringMVC原理 1.Springmvc 框架介绍 1)Spring 框架停工了构建Web应用程序的全功能MVC模块.Spr ...

  8. Quartz定时任务学习(二)web应用/Quartz定时任务学习(三)属性文件和jar

    web中使用Quartz 1.首先在web.xml文件中加入 如下内容(根据自己情况设定) 在web.xml中添加QuartzInitializerServlet,Quartz为能够在web应用中使用 ...

  9. MyBatis学习系列三——结合Spring

    目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring MyBatis在项目中应用一般都要结合Spring,这一章主要把MyBat ...

  10. MyBatis学习 之 三、动态SQL语句

    目录(?)[-] 三动态SQL语句 selectKey 标签 if标签 if where 的条件判断 if set 的更新语句 if trim代替whereset标签 trim代替set choose ...

随机推荐

  1. 【MySQL】SQL语法,between and 使用注意事项

    业务代码中有条查询学生姓名的sql: select stu_name from stu_info where stu_id between id_1 and id_2; 估计当时一时恍惚,拼接sql时 ...

  2. BZOJ 1208 宠物收养所

    Description 最近,阿Q开了一间宠物收养所.收养所提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物.每个领养者都希望领养到自己满意的宠物,阿Q根据领养者的要求通过他自己发明的一个特 ...

  3. Unity3d 与IOS 相互调用

    Unity3d 与IOS 相互调用 @灰太龙 群63438968 我用的Unity3d 4.2版本,这一节说一下IOS与U3D的交互! 首先在U3D中写个方法:这个时候导出为ios代码必须是真机,模拟 ...

  4. City Game

    hdu1505:http://acm.hdu.edu.cn/showproblem.php?pid=1505 题解:给你一个字符矩阵,里面有R和F两种字符,然后让你找一个最大的子矩阵,这个最大的子矩阵 ...

  5. Spring中用@Component、@Repository、@Service和 @Controller等标注的默认Bean名称会是小写开头的非限定类名

    今天用调度平台去调用bean中的方法时,提示找不到bean.经查,发现是由于如果在标注上没有提供name属性值,则默认的bean名称是小写开头的,而不是大写开头的. 下面是其他文档参阅: 使用过滤器自 ...

  6. Hibernate 配置详解(2)

    6) hibernate.session_factory_name: 配置一个JNDI名称,通过Configuration对象创建的SessionFactory会绑定到JNDI下该名称中.一般名字格式 ...

  7. DB_WRITER_PROCESSES与LOG_ARCHIVE_MAX_PROCESSES

    DB_WRITER_PROCESSES Property  Description Parameter type  Integer Default value  1 or CPU_COUNT / 8, ...

  8. java学习面向对象之this

    在我们讲构造函数的时候,我们知道,如果同时在java的堆内存当中,同时存在好几个刚进内存,但是又没来得及初始化的同一个类的对象.在这种情况下,那么如何去区分栈内存当中的构造函数是属于那个对象的呢,其实 ...

  9. 基于Node.js的强大爬虫 能直接发布抓取的文章哦

    基于Node.js的强大爬虫 能直接发布抓取的文章哦 基于Node.js的强大爬虫能直接发布抓取的文章哦!本爬虫源码基于WTFPL协议,感兴趣的小伙伴们可以参考一下 一.环境配置 1)搞一台服务器,什 ...

  10. JButton 做图片框

    JButton setHorizontalTextPosition(SwingConstants.CENTER);// 在水平方向文字位于图片中央 setVerticalTextPosition(Sw ...