在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
本章节介绍C#最基础知识(具备一定C#编程的基础知识)。 1.1 第一个C#程序 下面编译的当然是最最经典的helloworld代码,代码如下。
hello World
using System;
using System.Collections.Generic; namespace CSharpDemo { class Program { static void Main(string[] args) { Console.WriteLine("Hello World"); Console.WriteLine(); } } } 编译运行结果显示:Hello World C#没有用于输入输出的内置关键字,而完全是依赖.net类中的System.Console类。标准的system命名空间包含了最常见的.net类型。 1.2定义变量 在C#中声明变量使用下面语法:dataType indentifier; 例如:int i=10,y=20;
注意事项:C#是区分大小写的,也就是说定义的变量myDemo,和MyDemo是两个不同的变量。
1.3 变量的初始化 在C#中变量都必须要进行初始化,若没有初始化,编译器会将当做错误处理。 C#中有两种方法来确保变量在使用之前初始化: 1.变量是类或结构中的字段,如果没有显式初始化,创建这些变量时,其值默认为0。 2.方法中的局部变量必须显式初始化,之后才能够在语句中使用其值。 1.4 类型判断 类型推断使用var关键字,var关键字是C# 3.0开始新增的特性,称为推断类型。编译器可以根据变量的初始化值推断变量的类型,例如:var number=2;那么编译器就能够推断出number类型来,其实就是弱化了类型。 1.5 常量 常量就是在使用过程中不会发生变化的变量,只需要在定义变量之前添加const关键字即可。比如const int a=2; 常量的特性: 1.常量必须在声明中初始化。 2.常量的值必须在编译时用于计算。 3.常量总是静态的。 1.6 数据类型 C#认可的预定义类型并不是内置于C#语言中,而是内置在.net framework中。也就是当您定义了一个int类型声明时,实际上是使用了.net结构中System.Int32的一个实例。 C#预定义类型有15个类型,其中13个值类型,2个引用类型(string和object) A、整型 sbyte ,8位有符号的整数,范围从 -128到127. byte ,8位无符号的整数,范围从 0到255. short,16位有符号的整数,范围从 -32768到32767 ushort ,16位无符号的整数,范围从0到65535 int,32位有符号的整数,范围从-2147483648到2147483647 uint,32位无符号的整数,范围从0到4294967295 long,64位有符号的整数,范围从-2的31次方到2的31次方减1 ulong,64位无符号的整数,范围从0到2的64次方减1 B、浮点类型。 float ,32位单精度浮点数。 double,64位双精度浮点数。 如果代码对某个非整数值,如12.3硬编码,则编译器一般假定该变量是double,如果想指定其为float,则可以在后面加上字符f。 C、decimal类型。 该类型是一种财务专用数据类型,是128位高精度十进制表示法。 要把数据指定为decimal类型的,只需在数字后面加上M(或者m) D、 bool类型。 C#的bool类型包含true和false。 E、 字符类型。 也就是char类型,表示一个16位的unicode字符。 char类型的字面量是采用 单引号 括起来的。而不是双引号。双引号括起来的是字符串类型的。 F、预定义引用类型。 A、object类型。 这是C#的基类,所有的类都派生自它。所以,可以使用object引用绑定任何子类型的对象,object类型执行许多基本的一般用途的方法,如 Equals() GetHashCode(),GetType()等,我们需要针对某些方法进行“重写,这在后面我们将会学习到。 B、string类型。 说明:值类型和引用类型的区别 首先从概念上区别:值类型直接存储其值,引用类型对其存储值得引用。二者之间不同之处在于,值类型存储在堆栈中,而引用类型存储在托管推中 C#中的数据类型,可以分为值类型和引用类型,值类型存储在堆栈上,而引用类型存储在托管堆上。 如下代码示例, int i=10; int j=i; i和j的值都是10,并且在内存中会有两个地方存储10. 再看下面的代码 Vector x=new Vector(); x.Value=20; Vector y=x; Console.WriteLine(y.Value); y.Value=50; Console.WriteLine(x.Value); Vector是一个引用类型,引用类型在使用的时候需要new 来实例化一个。这段代码执行后,只有一个Vector对象,x,y都指向包含该对象的内存地址。因为x,y存储的都是对象的引用,所以当y改变的时候,x也会改变。所以该程序输出的结果是20和50. 如果变量是一个引用,就可以把其值设置为null,表示不指向任何对象 1.7 枚举 枚举是用户定义的整数类型 定义如下的枚举:
枚举定义及使用
using System;
using System.Collections.Generic; namespace CSharpDemo { class Program { static void Main(string[] args) { Console.WriteLine(TimeOfDay.Moring); Console.WriteLine(); } public enum TimeOfDay { Moring=0, AfterNoon=1, Evening=2 } } } 1.8 命名空间 命名空间提供了一种程序相关组织类和其他类型的方式。与文件不一样,命名空间只是逻辑组合而不是物理组合。 例如:
namespace CSharpDemo
{}
1.8.1 using语句 用于简化键入繁琐的命名空间。使用using关键字即可。例如using system; using 关键字的另外一个用途是给类和命名空间添加别名,例如 using alias=system;那么就给system空间增加了一个别名 1.9 C# 预处理指令 1.9.1 #define和#undef #define debug 告诉编译器存在给定的debug符号 #undef debug 删除debug符号,如果没有这个符号,那么没有任何作用。 1.9.2 #if #elif #else 和endif 这些指令告诉编译器是否要编译某个代码块比如:
public int doSomeThing()
{ #if debug { //do something } } 1.9.3 #warning和error 当编译遇到他们时候分别表示警告或错误。使用如下: #warning "you should do something"
consle.writeline("do something"); 1.9.4 #region 和#endregion 该指定用于把一段代码标记为有指定名称的一个模块。该功能主要是方便代码在屏幕上面布局。 使用示例:
示例
#region 测试使用过的
class Program { static void Main(string[] args) { Console.WriteLine(TimeOfDay.Moring); Console.WriteLine(); } public enum TimeOfDay { Moring=0, AfterNoon=1, Evening=2 } public void doSomeThing() { #warning "you should do something" { //do something } } } #endregion 小结:写的比较不够细。
|
请发表评论