认识C#
1、NET概述与C#应用
.NET是Microsoft .NET的简称,是基于window平台的一种技术。它包含了能在.NETFramework平台运行的所有编程语音。 .NET Framework 是微软(Microsoft)为开发应用程序创建的一个富有革命性的新平台,在这个平台环境中,可以开发出运行在window上的几乎所有应用程序。简单来说
.NET Framework 是一个创建、部署、运行应用程序的多语言多平台环境,它包含了一个庞大的代码库,各种能够运行在.NET Framework 平台上的语言都可以共享这个代码库。
C#是一种全新的语言,在设计它的时候,微软博采众长,将C、C++、Java等多种开发语言的优点集于一身,它是专为.NET开发设计的编程语言,是微软为其下一代互联网霸主地位打造的,是Microsoft.NET平台运行的主流语言。
C#提出了纯粹的面向对象概念,并在语言特性中展现的淋漓尽致,C#还通过引用类型,值类型和接口类型的概念形成了同一的类型系统。
Visual Studio发展历史如下
发布时间 | 开发工具版本 | 支持最高.NET Framework版本 |
---|---|---|
1998年6月 | Visual Studio 6.0 | 不支持 |
2002年2月 | Visual Studio .NET | 1.0 |
2003年4月 | Visual Studio 2003 | 1.1 |
2005年11月 | Visual Studio 2005 | 2.0 |
2007年11月 | Visual Studio 2008 | 3.5 |
2010年4月 | Visual Studio 2010 | 4.0 |
2012年8月 | Visual Studio 2012 | 4.5 |
2013年10月 | Visual Studio 2013 | 4.5.2 |
2014年11月 | Visual Studio 2015 | 4.6 |
2015年7月 | Visual Studio 2015 RTM | 6.0 |
2、第一个C#的创建
对.NET Framework、C#和Visual Studio有了初步认识后,下面就让我们来了解一下C#程序的庐山真面目把。
首先启动 Visual Studio 2012 选择“开始”—“所有程序”—“Microsoft Visual Studio 2012”—“Visual Studio 2012”选项
2.1、新建项目
在Visual Studio 菜单栏中选择“文件”—“新建”—“项目” 选项,弹出“新建项目”对话框,如图
选择控制台应用,在名称文本框中输入“HelloWorld”
为项目选择一个保存的位置,如D:\。单击“确定”按钮后,就创建了一个C#代码模板 如图:
后面再生成可执行文件,最后开始运行。
3、认识C#程序
现在让我们把注意力集中再Program.cs文件上。在解决方案资源管理器中双击Program.cs可以打开文件。代码如示例:
using System;
namespace ConsoleApp5
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
这语言跟Java没什么区别。
4、C#的变量和常量
C#中的数据类型如下图:
常用数据类型 | Java | C# | 举例 |
---|---|---|---|
整型 | int | int | 年龄 |
浮点型 | float | float | 成绩 |
双精度型 | double | double | 圆周率 |
字符串型 | string | string | 姓名 |
布尔型 | boolean | bool | 是否是少数名族 |
C#中布尔型的关键字与Java不同,使用bool C#中字符串型的关键字首字母是小写的。
4.1、C#中的变量
C#中的变量声明方式与Java是相同的。使用西门所介绍的方式。
C#中的变量声明方式使用的语法为
数据类型 变量名称;
总结变量命名规则
1、以字母、数字、" _ " 组成,除此之外不能包含其他任意字符。
2、只能以字母和 " _ " 开头。
3、不能使用C#中的关键字,不能包含任意特殊字符。
4、使用驼峰命名法命名,即第一个单词首字母小写,其他单词首字母大写。
4.2、C#的常量
用于在程序中一旦设定就不允许被修改的值,
语法:
const 数据类型 常量名 = 值;
需要使用const关键字修饰。
如何使用:用于程序中被经常引用的值、用于程序中具有特定含义的值。
5、Console类
5.1、C#中的Console类
5.1.1、C#向控制台输出
有三种方法:
Console.WriteLine();
Console.WriteLine(要输出的值);
Console.WriteLine("格式字符串",变量列表);
第三中方式中,WriteLine()的参数由两部分组成:格式字符串和变量列表。在格式字符串中,依次使用{0}、{1}、{2}···代表要输出的变量,{0}这些表示占位符,将变量依次排列在变量列表中,{0}表示变量列表第一个变量,{1}表示变量列表的第二个变量,以此类推。
5.2C#向控制台输入
语法:Console.ReadLine();
该语法只是用于往控制台输入字符串类型,但是需要输入其他类型时就需要类型转换了:
5.2.1、类型转换
1、隐式:自动转换
在类中当一个数据类型比另一个大时(包含),就可以自动转换,例如
int b = 1;
long a = b;
2、强转
有两种:
1、数据类型.Parse(String);
这种类型只是用于string类型转换为其他类型,不接受其他数据类型作为参数。
2、Convert.To数据类型(任意数据类型)
Convert类可以在各种基本类型之间执行数据类型的互相转换。Convert类为每种类型转换都提供了一个对应的方法,如下表所示:
6、C#的结构类型
1、顺序结构
就是程序按照顺序,自上而下每一句代码都会执行。
2、选择结构
与Java结构中相同,只有满足某个条件才会执行该代码块,否则不执行。
2.1、if结构
语法:
if(条件表达式)
{
//代码块
}
2.2、if-else结构
语法:
if(条件表达式)
{
//代码块1
}
else
{
//代码块2
}
2.3、多重if结构
语法:
if(条件表达式1)
{
//代码块1
}
else if(条件表达式2)
{
//代码块2
}
else
{
//代码块3
}
2.4、嵌套if结构
语法:
if(条件表达式1)
{
if(条件表达式2)
{
//代码块1
}
else
{
//代码块2
}
}
else
{
//代码块3
}
if结构书写代码规范
1、为了使if结构更加清晰,应该把每个if或else包含的语句都用大括号括起来
2、相匹配的一队if和else应该左对齐
3、内层的if结构相对于外层的if结构要有一定的缩进
2.5、switch选择结构
C#的switch结构与Java略有不同,C#要求每个case和default语句中都必须要有break语句,除非两个case中间没有其他语句,那么前一个case可以不包括break,C#中的判断更加灵活,判断的表达式或变量可以是字符串类型,语法如下:
Java C#
switch(表达式) switch(表达式)
{ {
case 常量表达式1: case 常量表达式1:
//语句1; //语句1;
break;/*可以没有*/ break;//必须有
case 常量表达式2: case 常量表达式2:
//语句2; //语句2;
break;/*可以没有*/ break;//必须有
······ ······
default: default:
//语句n; //语句n;
break;/*可以没有*/ break;//必须有
} }
注意:
switch 结构中case子句的摆放是没有顺序的,可以把default子句放在最前面,但要注意任何两个case语句不能具有相同的值。case子句中的值必须是常量表达式,不允许使用变量。
3、循环结构
与Java结构中相同,只有满足条件才会循环。
3.1、while循环
语法:
while(条件表达式) //先判断条件是否满足,如果条件成立就执行循环体
{
//代码块
}
3.2、do-while循环
语法:
do //先执行再判断条件,至少执行一次
{
//代码块
}while(条件表达式);
3.3、for循环
语法:
for(表达式1;表达式2,表达式3)
{
//代码块
}
与Java中的相同,可以去我之前写的博客参考一下。
3.4、foreach循环
语法:
foreach(元素类型 元素变量名 in 数组)
{
//代码块
}
在语法中,元素类型值的就是数据类型,“元素”是一个只读变量。
each是每个的意思,foreach循环结构用于遍历一个数据集合的每一项。
注意:foreach结构不能改变数组中各元素的值;如果需要改变数组中元素的值,应该使用for循环。
循环的区别:
while循环:先判断条件是否成立,若条件成立,则执行循环条件。
do—while循环:循环体先执行一次,再判断条件是否成立。
for循环:必须使用整型变量做循环变量计算器。
foreach循环:用于遍历给定数组的所有值。
与java里的相同,在C#中的跳转语句也是一样的。
break
除了在switch结构中使用break退出整个case语句外,也可以用于while,do—while循环等,break语句将程序跳出当前循环结构,并继续执行该循环体后面的语句。
continue
与break语句类似,continue的作用与Java是相同的即跳出本次循环进入下一轮循环。
7、深入了解string类
7.1、常用的字符串处理方法
方法 | 说明 |
---|---|
string Trim() | 去掉字符串前后两端多余的空格 |
bool Equals(string value) | 比较一个字符串与另一个字符串value的值是否相等,若两者相等,返回true否则 返回false |
int IndexOf(string value) | 获取value在当前字符串中出现的首个位置 |
int lastIndexOf(string value) | 获取指定的字符串value在当前字符串中最后一个匹配的位置 |
string Substring(int sta) | 从指定位置sta开始检索长度为length的字符串 |
string ToUpper() | 获得字符串大写的形式 |
string ToLower() | 获得字符串的小写形式 |
string []Split(char separator) | 用指定的分隔符separator分割字符串,返回分割后字符串的数组 |
int Compare(string A,strin g B) | 比较两个字符串的大小关系,返回一个整数。若前者大,返回值大于0,反正则小于0,相等就返回0 |
注意:比较“==”和“Equals()”方法:
运算符""和“Equals()”应用于两个字符串,所判断的内容是有区别的,简单来说”“判断的是两个字符串对象在内存中的首地址,即判断是否是同一个对象。
“Equals()”方法判断的是两个字符串对象的值是否相等。
连接和分割字符串
两种方法 Join()和Split()方法。
//输入提示
Console.WriteLine("请输入一个字符串");
string input=Console.Readine();
//以空格作为分隔符分割字符串
a=input.Split(' ');
//将分割后的字符串使用下划线连接
b=input.Join("-",input);
7.2、Format格式化
C#的string类提供的一个Format()方法对输出的字符串进行格式化,Format()方法允许把字符串,数字或布尔类型变量插到格式化字符中。语法如下
String myString =String.Format("格式化字符串",参数列表);
{索引 [,对齐] [: 格式字符串]}
例如:
String myString =String.Format("{0} 乘以 {1} 等于 {2}",1,2,1*2);
//输出1*2=2;
ing input=Console.Readine();
//以空格作为分隔符分割字符串
a=input.Split(’ ');
//将分割后的字符串使用下划线连接
b=input.Join("-",input);
#### 7.2、Format格式化
C#的string类提供的一个Format()方法对输出的字符串进行格式化,Format()方法允许把字符串,数字或布尔类型变量插到格式化字符中。语法如下
```c#
String myString =String.Format("格式化字符串",参数列表);
{索引 [,对齐] [: 格式字符串]}
例如:
String myString =String.Format("{0} 乘以 {1} 等于 {2}",1,2,1*2);
//输出1*2=2;
就是改了点代码,其他的都差不多。