Java进击C#——语法之基础
本章简言 |
上一章讲到关于项目工程开发常用的知识点,有了前面俩章的介绍之后。本章正式开始介绍关于C#的基础语法。我们都很清楚C#也是面向对象的计算机语言。而且他跟JAVA的相似度高达80%。所以很多语法点基本上是一样子。学过JAVA的人,现在开始学习C#的话。面临最大的问题是环境的不熟悉。如开发环境。同时有一点希望读者们心里要明白。如果以为看了笔者的博文就可以说学会了,那我只能说你天真了。笔者的博文只能算是一种协助而以。加速你对C#的认识和了解。并且笔者不会更深入的讲解C#,一切以入门上手为主。当然不可否认的是笔者写的知识也不一定是正确的。
基础语法之数据类型 |
数据类型。也就是所谓的变量。这是基础中的基础。让我们看一下C#有哪一些常用的数据类型。
C#:
int intValue = ;//跟JAVA一样子。只是C#这边有把int分为int32,int16,int64。其中int64好像就是long类型
long longValue = 2l;//跟JAVA一样子。
float floatValue = 1f;//跟JAVA一样子。
double doubleValue = 2d;//跟JAVA一样子。
string stringValue = "aomi";//C#里面字符串类型有俩种:string,String(注意头字母大写)。常用是string类型写法。String是string对应的对象类型。而且JAVA只有String类型。
char charValue = 'c';//跟JAVA一样子。
bool boolValue = false;//跟JAVA的boolean一样子。只是这里少了ean。同时C#本身也有bool对应的Boolean对象类型。
decimal decimalValue = 3.4m;//C#独有的。也是浮点数。一般用于钱相关的业务。跟float,double用法是一样子。只是这个是以M为结尾。
int? intMark = null;//可以为空的数据类型。C#独有的。在JAVA笔者没有见过
var varInt = ;//有一点像弱化类型一样子。主要是编译器会根据上下文来判断当前变量的类型。
var varString = "aomi"//同上
上面是开发时候常用数据类型的定义。我们可以看出来。只有要记住几个不同点就可以学会这边的知识点了。
1.decimal类型不同:只要明白他跟double的用法是相似的(如果要深入的话,是不一样子)。
2.string类型不同:JAVA头字母是大写。而C#却是小写。同时注意的是string类型的比较。C#用的是==和Equals方法,俩种比较方式都是比较值的(当然,非字符串是比较引用)。但JAVA却不一样子。这个你们懂的。
3.bool类型不同:少了ean。用法是一样子。
4.var的关键字:有一点像弱化类型一样子。主要是编译器会根据上下文来判断当前变量的类型。
5.数据类型?:可为空的数据类型。INT类型一般默认值为0,不可能为null。也不可能等于null。当加了?那就是不一样子。
清楚了数据类型的定义之后,就要了解一下数据类型之后转化。C#这边笔者最常用的就三种方式的转化。如下
C#:
int parseVlaue = Int32.Parse("");
int convertVlaue = Convert.ToInt32("");
int value = (int) 4.5d;
上面的代码是三种常用的类型转化的方式。关于用Parse方法相信JAVA也常看到。如Integer.parseInt。笔者不多说。中间那种方式才是C#中最常用的方法。也是JAVA中笔者没有看到的。Convert类是一个用于转化的工具类。里面包含了很多种转化方法。如何学习呢?写一下Convert.这个时候开发工具就是提示各种方法出来。这不是可以学习了吗?或是按快捷键Ctrl+J。提示窗体如下
上面的转化都是显性转化,关于隐性的转化。笔者就不多提。还有一点值得注意:1.C#有一个一般对象都会有的方法ToString。有时候这个方法会帮你转化对应的字符串。
基础语法之判断和循环语句 |
数据类型结束之后,便是对应的判断和循环语句了。让我们选看一下关于判断语句的用法吧。
C#:
var ifIntValue = ;
if(ifIntValue > )
{
//逻辑代码
}
else if(ifIntValue < )
{
//逻辑代码
}
else
{
//逻辑代码
} string aomi = "aomi";
switch(aomi)
{
case "aomi":
//逻辑代码
break;
default:
//逻辑代码
break;
}
显然判断语句没有什么差别。如果硬要说的话。笔者到是发现一个奇怪的结果:上面default:里面的break;C#这边不能删。删了会出错。JAVA却可以。
了解完了判断语句之后,让我们了解一下循环语句吧。同样子以带代码来看
int j = ; while(j<)
{
//逻辑代码
} do
{ } while(j<); for(int i=;i<;i++)
{
//逻辑代码
}
string[] values = { "aa", "bb" };
foreach(string v in values)//相当于JAVA的for(变量类型 变量名 : 数组变量);
{
//逻辑代码
}
我们可以看到最后一个的不同点:JAVA是用for(变量类型 变量名 : 数组变量);而且C#是foreach(变量类型 变量名 in 数组变量)。特别注意的是这里:和 in 的细微差别。另外循环里面的break和continue的用法是不是一样子。
基础语法之数组和集合 |
数组的概念大家都知道。实例化的形式不管是JAVA还是C#都是一样子。实例化常用方式笔者认为有三种:
1.实例化不带初始值。
int [] array = new int[];
2.实例化带有初始值。
int [] list = new int[]{,,,};
上面这段代码在C#里面是通得过的。可是JAVA却不行。必须把[4]里面数值4去掉JAVA才能通过了。即是把[4]修改成[]。但是C#里面去不去数值4都可以通过。
3.匿名实例化数组。俩边通得过。到是这一点让笔者没有想到的。
String[] values = { "aa", "bb" };
集合类可以说是编程中最常用的一个部分。C#集合类可以说都是在System.Collections命名空间下。那们大部分是实现于三个接口类:IList接口、ICollection接口、 IEnumerable接口、IDictionary接口。笔者喜欢把集合类分为俩种:一是集合;一种是字典。
IEnumerable接口:大白话讲这个接口就是跟foreach有关系。迭代集合时候需要实现的接口。笔者一直不知道如何去说明这个接口。类似于JAVA的Iterator接口。
ICollection接口:获得集合类的数量和复制一个数组类型。
IList接口:类似于JAVA的List接口的功能。
IDictionary接口:类似于JAVA的Map接口的功能。
那么C#这边常用的实例化用法如下
IList strList = new ArrayList();
ArrayList strList = new ArrayList();
ArrayList类算是集合类常用的一个类。对于获得集合里面的一个元素的话。C#这边略有一点不同。
IList strList = new ArrayList();
object obj = strList[0];
strList[0]代码就是相当于JAVA的strList.get(0)。那么删除呢?
IList strList = new ArrayList();
strList.RemoveAt();
上面是删除中的一种。还是有一种就是传一个集合对应的值进行删除。最后看一下增加。
int aaa = ;
IList strList = new ArrayList();
strList.Add(aaa);
上面笔者说喜欢把集合类分为俩种,上面是集合部分。接下来让我们看一下字典部分。字典相信大家都知道 一个KEY就有对应的一个VALUE。即是键值对。
IDictionary dic = new Hashtable();
dic.Add("aomi", );
上面就是实例化一个字典并增加对应的数据。一看就明白如何增加数据了。
IDictionary接口里面有俩种很重要的属性成员:Keys和Values。分别用于存放键的集合和值的集合。所以我们可以根据这俩个属性成员做很多事情。
IDictionary dic = new Hashtable();
foreach(object keyObj in dic.Keys)
{
Console.WriteLine(dic[keyObj]);
}
跟上面的集合的获得方式有一点像了。dic[keyObj]相当于dic.get(key)。当然我们也可以直接把Values做迭代。笔者就不多说了。至于删除就是调用Remove方法传入对应的键参数。
上面的知识是很早以前常用的一些写法。现在版本的变化。对应的很多常用的知识也代替了。不过写法都不会变。
ArrayList类被List<T>类取代。
Hashtable类被Dictionary<TKey,TValue>类取代。
上面和T、TKey、TValue都是泛型。下面就是对应的实例化。
IList strList = new List<object>();
IDictionary dic = new Dictionary<object,object>();
集合类除了上面讲到的之外。还有Queue类、SortedList类、 Stack类等。笔者这里就不多介绍了。有心的朋友可以去找一下资料。
注意:在我们应用中常常会讲到线程安全的集合类:
1.ConcurrentQueue
2.QueueConcurrentStack
3.ConcurrentBag
4.ConcurrentDictionary
5.BlockingCollection
本章总结 |
本章主要是对C#基础语法进行讲解。笔者相信对于有经验的JAVA开发人员来讲很简单的。同时我们也可以看到JAVA和C#之间的语法点差不多。更多只是在写法的不同而以。
Java进击C#——语法之基础的更多相关文章
- Java进击C#——语法之ADO.NET
本章简言 上一章讲到关于C#语法的基础部分.了解相关的基础部分之后我们就要去了解一下C#是什么样子访问数库的.C#把访问数据库这一部分的知识点叫作ADO.NET.即是JAVA常常讲到的JDBC这一部分 ...
- Java进击C#——语法之IO操作
本章简言 上一章我们对线程同步进行讲解.了解如何去处理可能发生的脏数据.而本章就要讲有关于C#在读取IO文件的时候,常常用到的操作类.这一章的内容会比较少.但是笔者还是总结出来让读者们有一个学习的方向 ...
- Java进击C#——语法之多线程
本章简言 上一章中笔者对C#一些独有的语法点进行讲解,相信也可以看C#的一些神奇之处.那么本章主要是放在多线程这方面的知识.不管是C#还是JAVA在开发过程或多或少都会用到关于多线程的编程.当然笔者不 ...
- Java进击C#——语法之知识点的改进
本章简言 上一章我们讲到关于面向对象思想上C#和JAVA之差别.笔者分别从面向对象的三大特性入手.而本章主要讲一些C#改进的知识点.在.NET Framework 2.0之后出现很多新的知识点.这些知 ...
- Java进击C#——语法之面向对象
本章简言 上一章笔者讲到关于ADO.NET相关的知识,知道了如何去访问数据库.本章将来讲关于面向对象的思想.不管在JAVA还是在C#面向对象思想的重要性都是占了一个很大的成份.往往他就像呼吸一样子,更 ...
- Java进击C#——语法之线程同步
上一章我们讲到关于C#线程方向的应用.但是笔者并没有讲到多线程中的另一个知识点--同步.多线程的应用开发都有可能发生脏数据.同步的功能或多或少都会用到.本章就要来讲一下关于线程同步的问题.根据笔者这几 ...
- 【Java基础】Java中的语法糖
目录 Java中的语法糖 switch对String和枚举类的支持 对泛型的支持 包装类型的自动装箱和拆箱 变长方法参数 枚举 内部类 条件编译 断言 数值字面量 for-each try-with- ...
- Java进击C#——前言
本章简言 记得三年前笔者来到现在的公司的时候,公司人口不出十个人.那个时候笔者刚从日本回来,想在福州.厦门.青岛找一个合适自己发展的机会.最后我的一个福州的朋友打电话希望我能过去帮他,跟他一起创业.这 ...
- Java进击C#——应用开发之Linq和EF
本章简言 上一章笔者对于WinForm开发过程用到的几个知识点做了讲解.笔者们可以以此为开端进行学习.而本章我们来讲一个跟ORM思想有关的知识点.在讲之前让我们想一下关于JAVA的hibernate知 ...
随机推荐
- JQuery之$.ajaxPOST数据
function postSimpleData() { $.ajax({ type: "POST", url: "/Service/SimpleData", c ...
- 用C语言编写生成小学四则运算程序
使用软件——VS 2015 使用环境——C语言 早在上周我就开始使用C#语言做,由于最后一点问题而放弃,之后用C语言开始做,很顺利,但是也碰到了一些问题,但是通过了百度文库上的一些程序的借鉴和吴阿平同 ...
- 【五】将博客从jekyll迁移到了hexo
本系列有五篇:分别是 [一]Ubuntu14.04+Jekyll+Github Pages搭建静态博客:主要是安装方面 [二]jekyll 的使用 :主要是jekyll的配置 [三]Markdo ...
- JavaScript 事件 编程练习
编程练习 使用JS完成一个简单的计算器功能.实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除. 提示:获取元素的值设置和获取方法为:例:赋值:document.getElement ...
- openCV C++ 代码笔记
代码片段1 cv_contourMask_step_tmp=cv_contourMask.clone(); cv::Mat maskImage; UIImageToMat(pathimg, maskI ...
- SQL Server2016 原生支持JSON
SQL Server2016 原生支持JSON SQL Server 2005 开始支持 XML 数据类型,提供原生的 XML数据类型.XML 索引以及各种管理 XML 或输出 XML 格式的函数. ...
- Python黑帽编程2.3 字符串、列表、元组、字典和集合
Python黑帽编程2.3 字符串.列表.元组.字典和集合 本节要介绍的是Python里面常用的几种数据结构.通常情况下,声明一个变量只保存一个值是远远不够的,我们需要将一组或多组数据进行存储.查询 ...
- 安装 mysql-5.7.5-m15-winx64
win7 64位下如何安装配置mysql-5.7.5-m15-winx64 距离上次安装MySQL已经过去好久了.步骤这些,有可能会忘记.简单记录一下吧.(参考了一些网络上的博客.) 1.mysql- ...
- 仿h5拖拽
在h5中有个拖拽的声明式命令,就如html属性一样,简单强大. 而在网页上拖拽的功能还是需求很大的,所以对这方面应该去仔细了解一下. 所以仿一一下它的实现.只是仿了它的复制一份到目标容器的功能.它还有 ...
- TSql 巧用Alt 键
1,查看表的信息 在TSql 编辑器中,选中一个表,如图 点击Alt+F1,就可以查看表的属性定义 2,使用alt批量插入逗号 在Tsql中使用 in 子句,在(value_List)列表中,经常有很 ...