志在指尖
用双手敲打未来

c#教程(c#入门经典)

c#教程

C#是一个现代的、通用的、面向目标的(目标?你有目标吗?)编程言语,它是由微软(Microsoft)开发的,是为开发微软公司的.NET结构上的程序而规划的。(想了解.NET?等咱们下章一同学学)是专为公共言语根底结构(CLI)规划的。CLI由可履行代码和运转时环境组成,答应在不同的计算机渠道和体系结构上运用各种高级言语。
C#成为一种广泛应用的专业言语的原因:
l现代的、通用的编程言语。
l面向目标。
l面向组件。
l容易学习。
l结构化言语。
l它发生高效率的程序。
l它能够在多种计算机渠道上编译。
l.Net结构的一部分。
留意:彻底面向目标:不象C++言语,即支持面向进程程序规划,又支持面向目标程序规划,C#言语是彻底面向目标的,在C#中不再存在全局函数、全局变量,一切的函数、变量和常量都有必要界说在类中,避免了命名抵触。C#言语不支持多重继承。
看完这些应该有个大致了解了,没有想象中的那么难,努力学习吧!
开发环境
VisualStudio(VS)
可从微软官方网址下载。能够编写各种C#程序,从简略的命令行应用程序到更杂乱的应用程序。您也能够运用根本的文本编辑器(比方Notepad)编写C#源代码文件,并运用命令行编译器(.NET结构的一部分)编译代码为组件。
直接上程序看看长什么样子,貌似学每个言语都有个helloworld,真是打开新世界的大门了。可是怎样把程序运转?
l发动VisualStudio。
l在菜单栏上,挑选File(文件)->New(新建)->Project(项目)。
l从模板中挑选VisualC#,然后挑选Windows。
l挑选ConsoleApplication。
l为您的项目拟定一个称号,然后点击OK按钮。
l新项目会呈现在解决方案资源管理器(SolutionExplorer)中。
l在代码编辑器(CodeEditor)中编写代码。
l点击Run按钮或许按下F5键来运转程序。会呈现一个命令提示符窗口(CommandPromptwindow),显现HelloWorld。
l您也能够运用命令行替代VisualStudioIDE来编译C#程序:
l打开一个文本编辑器,增加上面提到的代码。
l保存文件为helloworld.cs。
l打开命令提示符东西,定位到文件所保存的目录。
l键入cschelloworld.cs并按下enter键来编译代码。
l假如代码没有过错,命令提示符会进入下一行,并生成helloworld.exe可履行文件。
l接下来,键入helloworld来履行程序。c#
l您将看到”HelloWorld”打印在屏幕上
l
C#HelloWorld实例
usingSystem;
namespaceHelloWorldApplication
{
classHelloWorld
{
staticvoidMain(string[]args)
{
/*我的榜首个C#程序*/
Console.WriteLine(“HelloWorld”);
Console.ReadKey();
}
}
}
一个C#程序首要包括以下部分:
命名空间声明(Namespacedeclaration)
一个class
Class办法
Class特点
一个Main办法
句子(Statements)&表达式(Expressions)
注释
让咱们看一下上面程序的各个部分:
程序的榜首行usingSystem;-using关键字用于在程序中包括System命名空间。一个程序一般有多个using句子。
下一行是namespace声明。一个namespace是一系列的类。HelloWorldApplication命名空间包括了类HelloWorld。
下一行是class声明。类HelloWorld包括了程序运用的数据和办法声明。类一般包括多个办法。办法界说了类的行为。在这里,HelloWorld类只有一个Main办法。
下一行界说了Main办法,是一切C#程序的入口点。Main办法说明当履行时,类将做什么动作。
下一行/*…*/将会被编译器忽略,且它会在程序中增加额外的注释。
Main办法经过句子Console.WriteLine(“HelloWorld”);指定了它的行为。
WriteLine是一个界说在System命名空间中的Console类的一个办法。该句子会在屏幕上显现音讯”Hello,World!”。
最终一行Console.ReadKey();是针对http://VS.NET用户的。这使得程序会等候一个按键的动作,防止程序从VisualStudio.NET发动时屏幕会快速运转并封闭。
以下几点值得留意:
C#是大小写灵敏的。
一切的句子和表达式有必要以分号(;)结尾。
程序的履行从Main办法开始。
C#是一种面向目标的编程言语。在面向目标的程序规划办法中,程序由各种相互交互的目标组成。相同种类的目标一般具有相同的类型,或许说,是在相同的class中。
例如,以Rectangle(矩形)目标为例。它具有length和width特点。根据规划,它或许需求承受这些特点值、计算面积和显现细节。
根本语法
让咱们来看看一个Rectangle(矩形)类的实现,并借此评论C#的根本语法:
usingSystem;
namespaceRectangleApplication
{
classRectangle
{
//成员变量
doublelength;
doublewidth;
publicvoidAcceptdetails()
{
length=4.5;
width=3.5;
}
publicdoubleGetArea()
{
returnlength*width;
}
publicvoidDisplay()
{
Console.WriteLine(“Length:{0}”,length);
Console.WriteLine(“Width:{0}”,width);
Console.WriteLine(“Area:{0}”,GetArea());
}
}
classExecuteRectangle
{
staticvoidMain(string[]args)
{
Rectangler=newRectangle();
r.Acceptdetails();
r.Display();
Console.ReadLine();
}
}
}
using关键字
在任何C#程序中的榜首条句子都是:
usingSystem;
using关键字用于在程序中包括命名空间。一个程序能够包括多个using句子。
class关键字
class关键字用于声明一个类。
C#中的注释
注释是用于解说代码。编译器会忽略注释的条目。在C#程序中,多行注释以/*开始,并以字符*/停止,如下所示:
/*Thisprogramdemonstrates
ThebasicsyntaxofC#programming
Language*/
单行注释是用’//’符号表明。例如:
}//endclassRectangle
成员变量
变量是类的特点或数据成员,用于存储数据。在上面的程序中,Rectangle类有两个成员变量,名为length和width。
成员函数
函数是一系列履行指定使命的句子。类的成员函数是在类内声明的。咱们举例的类Rectangle包括了三个成员函数:AcceptDetails、GetArea和Display。
实例化一个类
在上面的程序中,类ExecuteRectangle是一个包括Main()办法和实例化Rectangle类的类。
标识符
标识符是用来辨认类、变量、函数或任何其它用户界说的项目。
在C#中,类的命名有必要遵循如下根本规矩:
标识符有必要以字母、下划线或@最初,后边能够跟一系列的字母、数字(0-9)、下划线(_)、@。
标识符中的榜首个字符不能是数字。
标识符有必要不包括任何嵌入的空格或符号,比方?-+!#%^&*()[]{}.;:”‘/\。
标识符不能是C#关键字。除非它们有一个@前缀。例如,@if是有用的标识符,但if不是,由于if是关键字。
标识符有必要区分大小写。大写字母和小写字母被认为是不同的字母。
不能与C#的类库称号相同。
C#关键字
关键字是C#编译器预界说的保留字。这些关键字不能用作标识符,可是,假如您想运用这些关键字作为标识符,能够在关键字前面加上@字符作为前缀。
在C#中,有些关键字在代码的上下文中有特殊的意义,如get和set,这些被称为上下文
C#中什么叫类的实例化?
直白地解说便是:经过已有的类(class)创立出该类的一个目标(object),这一进程就叫做类的实例化。
打个比方:你规划了一个飞机模型,交给工人师傅去加工制造,生产出一个(一批)飞机。飞机模型就相当于程序中的类,生产出来的飞机便是目标,生产飞机这一进程就叫做类的实例化。
MyPlaneplane1=newMyPlane();//类的实例化
C#数据类型
在C#中,变量分为以下几种类型:
值类型(Valuetypes)
引证类型(Referencetypes)
指针类型(Pointertypes)
值类型(Valuetypes)
值类型变量能够直接分配给一个值。它们是从类System.ValueType中派生的。
值类型直接包括数据。比方int、char、float,它们分别存储数字、字符、浮点数。当您声明一个int类型时,体系分配内存来存储值。
引证类型(Referencetypes)
引证类型不包括存储在变量中的实际数据,但它们包括对变量的引证。
换句话说,它们指的是一个内存方位。运用多个变量时,引证类型能够指向一个内存方位。假如内存方位的数据是由一个变量改动的,其他变量会主动反映这种值的改变。内置的引证类型有:object、dynamic和string。
目标(Object)类型
目标(Object)类型是C#通用类型体系(CommonTypeSystem-CTS)中一切数据类型的终极基类。Object是System.Object类的别号。所以目标(Object)类型能够被分配任何其他类型(值类型、引证类型、预界说类型或用户自界说类型)的值。可是,在分配值之前,需求先进行类型转化。
当一个值类型转化为目标类型时,则被称为装箱;另一方面,当一个目标类型转化为值类型时,则被称为拆箱。
objectobj;
obj=100;//这是装箱
动态(Dynamic)类型
您能够存储任何类型的值在动态数据类型变量中。这些变量的类型查看是在运转时发生的。
声明动态类型的语法:
dynamic=value;
例如:
dynamicd=20;
动态类型与目标类型类似,可是目标类型变量的类型查看是在编译时发生的,而动态类型变量的类型查看是在运转时发生的。
字符串(String)类型
字符串(String)类型答应您给变量分配任何字符串值。字符串(String)类型是System.String类的别号。它是从目标(Object)类型派生的。字符串(String)类型的值能够经过两种方式进行分配:引号和@引号。
例如:
Stringstr=”http://runoob.com”;
一个@引号字符串:
@”http://runoob.com”;
C#string字符串的前面能够加@(称作”逐字字符串”)将转义字符(\)当作一般字符对待,比方:
stringstr=@”C:\Windows”;
等价于:
stringstr=”C:\\Windows”;
@字符串中能够恣意换行,换行符及缩进空格都计算在字符串长度之内。
stringstr=@””;
用户自界说引证类型有:class、interface或delegate。
指针类型(Pointertypes)
指针类型变量存储另一种类型的内存地址。C#中的指针与C或C++中的指针有相同的功能。
声明指针类型的语法:
type*identifier;
例如:
char*cptr;
int*iptr;
就像仓库,仓库里有货架,货架上有编号:A1,A2,A3………………..,这些编号就能够看做是引证类型,现在来了一批货,有“马铃薯,黄瓜,西红柿”,这些便是值类型,假如你想让A1=马铃薯,那么就要把马铃薯搬到A1里面去,这就叫装箱,装箱需求消耗人力和工时(也便是消耗CPU和内存),同理拆箱就要把对应编号的货品搬出来,也是需求消耗人力和工时。
C#类型转化
类型转化从根本上说是类型铸造,或许说是把数据从一种类型转化为另一种类型。在C#中,类型铸造有两种方式:
隐式类型转化-这些转化是C#默许的以安全方式进行的转化,不会导致数据丢掉。例如,从小的整数类型转化为大的整数类型,从派生类转化为基类。
显式类型转化-显式类型转化,即强制类型转化。显式转化需求强制转化运算符,并且强制转化会形成数据丢掉。
下面的实例显现了一个显式的类型转化:
namespaceTypeConversionApplication
{
classExplicitConversion
{
staticvoidMain(string[]args)
{
doubled=5673.74;
inti;
//强制转化double为int
i=(int)d;
Console.WriteLine(i);
Console.ReadKey();
}
}
}
当上面的代码被编译和履行时,它会发生下列成果:
5673
C#类型转化办法
C#供给了下列内置的类型转化办法:(序号.办法&描绘)
1
ToBoolean
假如或许的话,把类型转化为布尔型。
2
ToByte
把类型转化为字节类型。
3
ToChar
假如或许的话,把类型转化为单个Unicode字符类型。
4
ToDateTime
把类型(整数或字符串类型)转化为日期-时间结构。
5
ToDecimal
把浮点型或整数类型转化为十进制类型。
6
ToDouble
把类型转化为双精度浮点型。
7
ToInt16
把类型转化为16位整数类型。
8
ToInt32
把类型转化为32位整数类型。
9
ToInt64
把类型转化为64位整数类型。
10
ToSbyte
把类型转化为有符号字节类型。
11
ToSingle
把类型转化为小浮点数类型。
12
ToString
把类型转化为字符串类型。
13
ToType
把类型转化为指定类型。
14
ToUInt16
把类型转化为16位无符号整数类型。
15
ToUInt32
把类型转化为32位无符号整数类型。
16
ToUInt64
把类型转化为64位无符号整数类型。
C#变量
一个变量只不过是一个供程序操作的存储区的名字。在C#中,每个变量都有一个特定的类型,类型决定了变量的内存大小和布局。范围内的值能够存储在内存中,能够对变量进行一系列操作。
咱们现已评论了各种数据类型。C#中供给的根本的值类型大致能够分为以下几类:
类型&举例
整数类型
sbyte、byte、short、ushort、int、uint、long、ulong和char
浮点型
float和double
十进制类型
decimal
布尔类型
true或false值,指定的值
空类型
可为空值的数据类型
C#答应界说其他值类型的变量,比方enum,也答应界说引证类型变量,比方class。这些咱们将在以后的章节中进行评论。在本章节中,咱们只研讨根本变量类型。
C#中的变量界说
C#中变量界说的语法:
;
在这里,data_type有必要是一个有用的C#数据类型,能够是char、int、float、double或其他用户自界说的数据类型。variable_list能够由一个或多个用逗号分隔的标识符称号组成。
一些有用的变量界说如下所示:
inti,j,k;
charc,ch;
floatf,salary;
doubled;
您能够在变量界说时进行初始化:
inti=100;
C#中的变量初始化
变量经过在等号后跟一个常量表达式进行初始化(赋值)。初始化的一般方式为:
variable_name=value;
变量能够在声明时被初始化(指定一个初始值)。初始化由一个等号后跟一个常量表达式组成,如下所示:
=value;
一些实例:
intd=3,f=5;/*初始化d和f.*/
bytez=22;/*初始化z.*/
doublepi=3.14159;/*声明pi的近似值*/
charx=’x’;/*变量x的值为’x’*/
正确地初始化变量是一个良好的编程习气,不然有时程序会发生意想不到的成果。
请看下面的实例,运用了各种类型的变量:
namespaceVariableDefinition
{
classProgram
{
staticvoidMain(string[]args)
{
shorta;
intb;
doublec;
/*实际初始化*/
a=10;
b=20;
c=a+b;
Console.WriteLine(“a={0},b={1},c={2}”,a,b,c);
Console.ReadLine();
}
}
}
当上面的代码被编译和履行时,它会发生下列成果:
a=10,b=20,c=30
承受来自用户的值
System命名空间中的Console类供给了一个函数ReadLine(),用于接收来自用户的输入,并把它存储到一个变量中。
例如:
intnum;
num=Convert.ToInt32(Console.ReadLine());
函数Convert.ToInt32()把用户输入的数据转化为int数据类型,由于Console.ReadLine()只承受字符串格局的数据。
C#中的Lvalues和Rvalues
C#中的两种表达式:
lvalue:lvalue表达式能够呈现在赋值句子的左面或右边。
rvalue:rvalue表达式能够呈现在赋值句子的右边,不能呈现在赋值句子的左面。
变量是lvalue的,所以能够呈现在赋值句子的左面。数值是rvalue的,因而不能被赋值,不能呈现在赋值句子的左面。下面是一个有用的句子:
intg=20;
下面是一个无效的句子,会发生编译时过错:
10=20;
留意:
不同类型变量进行运算的问题:
doublea=42.29;
intb=4229;
intc=a+b;
Console.WriteLine(“c={0}”,c);
Console.ReadKey();
上面这种编程办法是过错的,会呈现过错提示:
“无法将类型’double’隐式转化为’int’。”
举例说明,当一个精度高的数据类型与一个精度低的数据类型进行运算时,界说运算成果的变量类型有必要与精度最高的变量类型相同。这是为了防止在运算进程中形成数据丢掉。
下面是正确代码:
doublea=42.29;
intb=4229;
doublec=a+b;
Console.WriteLine(“c={0}”,c);
Console.ReadKey();
能输出运算成果:
c=4271.29
关于静态变量
在C#中没有全局变量的概念,一切变量有必要由该类的实例进行操作,这样做提升了安全性,可是在某些情况下却显得无能为力。
因而,咱们在保存一些类的公共信息时,就会运用静态变量。
static=value;
在变量之前加上static关键字,即可声明为静态变量。
参阅地址
办法的局部变量有必要在代码中显式初始化,之后才能在句子中运用它们的值。此刻,初始化不是在声明该变量时进行的,但编译器会经过办法查看一切或许的途径,假如检测到局部变量在初始化之前就运用了它的值,就会发生过错。
例如:
publicstaticintMain(){
intd;
Console.WriteLine(d);
}
在这段代码中,演示了怎么界说Main(),使之返回一个int类型的数据,而不是void。但在编译这些代码时,会得到下面的过错音讯:
Useofunassignedlocalvariable’d’
正确的做法是初始化它intd=0或许其他值。
今天暂时写到这里,特别想一天就能把我知道的都写上去(复制粘贴上去),但是我自己也处于正在学习的进程中,大家和我一同努力学习,每天学一点,总会有收成的,有弥补的能够留言,感谢每位看文章的人。
C#有用的网站
C#ProgrammingGuide-介绍了有关关键的C#言语特征以及怎么经过.NET结构访问C#的详细信息。
VisualStudio-下载作为C#集成开发环境的VisualStudio的最新版本。
GoMono-Mono是一个答应开发人员简略地创立跨渠道应用程序的软件渠道。
CSharp(programminglanguage)-维基百科解说C#(编程言语)。
c#入门经典
自己平时首要从事C#开发,现在把宝贵资源收拾一下共享给有需要的广阔.NET开发者~
如有帮助,别只管收藏,麻烦支持一下咯~
入门:书或视频
书C#入门经典(第8版)
WPF方面的书完全赞同轮子哥vczh推荐的WPF编程宝典(豆瓣)->
当然这本书有900多页,如果觉得太厚重看不下去能够考虑看《浅显易懂WPF》。
视频教程,当然是首选金旭亮教师的了。言语根底语法、规划形式、软件架构等都会涉及到~
C#-基本技术练习
C#-专业技术练习
C#-实战技术练习
也可重视《浅显易懂WPF》一书作者刘铁锰教师的Youtube频道SmartCollege,在上面他有个C#课程是现在最受欢迎的C#视频教程.
铁猛教师前一段时间还推出了浅显易懂UWP视频课程,相关课件请走传送门-github,欢迎fork或star.
中级:
深入理解C#(第3版)(豆瓣)
EffectiveC#(原书第3版)(豆瓣)
高档:
C#高档编程(第11版):C#7&.NETCore2.0(豆瓣)(这本是最新版,里面包括.NETcore2.0,.NETcore是未来的趋势~)
MoreEffectiveC#(原书第2版)(豆瓣)

未经允许不得转载:IT技术网站 » c#教程(c#入门经典)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载