• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Java进击C#——语法之基础

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
基础语法之数据类型

数据类型。也就是所谓的变量。这是基础中的基础。让我们看一下C#有哪一些常用的数据类型。

C#:

int intValue = 1;//跟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 = 1;//有一点像弱化类型一样子。主要是编译器会根据上下文来判断当前变量的类型。
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("123");
int convertVlaue = Convert.ToInt32("123");
int value = (int) 4.5d;

上面的代码是三种常用的类型转化的方式。关于用Parse方法相信JAVA也常看到。如Integer.parseInt。笔者不多说。中间那种方式才是C#中最常用的方法。也是JAVA中笔者没有看到的。Convert类是一个用于转化的工具类。里面包含了很多种转化方法。如何学习呢?写一下Convert.这个时候开发工具就是提示各种方法出来。这不是可以学习了吗?或是按快捷键Ctrl+J。提示窗体如下

上面的转化都是显性转化,关于隐性的转化。笔者就不多提。还有一点值得注意:1.C#有一个一般对象都会有的方法ToString。有时候这个方法会帮你转化对应的字符串。

基础语法之判断和循环语句

数据类型结束之后,便是对应的判断和循环语句了。让我们选看一下关于判断语句的用法吧。

C#:

var ifIntValue = 123;
if(ifIntValue > 100)
{
     //逻辑代码
}
else if(ifIntValue < 10)
{
    //逻辑代码
}
else
{
    //逻辑代码
}

string  aomi =  "aomi";
switch(aomi)
{
   case "aomi":
      //逻辑代码
        break;
   default:
         //逻辑代码
        break;               
}            

显然判断语句没有什么差别。如果硬要说的话。笔者到是发现一个奇怪的结果:上面default:里面的break;C#这边不能删。删了会出错。JAVA却可以。

了解完了判断语句之后,让我们了解一下循环语句吧。同样子以带代码来看

int j = 0;

while(j<10) { //逻辑代码 } do { } while(j<10); for(int i=0;i<10;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[4];

2.实例化带有初始值。

int [] list = new int[4]{1,2,3,4};

上面这段代码在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(0);

上面是删除中的一种。还是有一种就是传一个集合对应的值进行删除。最后看一下增加。

int aaa = 1;
IList strList = new ArrayList();
strList.Add(aaa);

上面笔者说喜欢把集合类分为俩种,上面是集合部分。接下来让我们看一下字典部分。字典相信大家都知道 一个KEY就有对应的一个VALUE。即是键值对。

IDictionary dic = new Hashtable();
dic.Add("aomi", 123);

上面就是实例化一个字典并增加对应的数据。一看就明白如何增加数据了。

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#之间的语法点差不多。更多只是在写法的不同而以。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap