欢迎您访问九擎网络科技官网,今天是 2019年01月08日 星期二
|  手机版 |   表格下载 |   客户留言 |   备案申请   建站申请 建站服务热线:0379-8088 8006

洛阳九擎网络科技公司

九擎新闻 建站资讯 网站建设 网站优化 微信营销 软件开发 移动开发 互联网+
主页 > 新闻动态 > 软件开发 >

C#学习日志之数据类型

九擎科技2018-07-12

  数据类型:

  一、值类型

  1、整数类型:sbyte(有符号8位)、byte(无符号8位)、short(有符号16位)、ushort(无符号16位)、int(有符号32位)、uint(无符号32位)、long(有符号64位)、ulong(无符号64位)。

  2、浮点类型:float(单精度)、double(双精度)。

  3、小数类型:decimal(128位)。在定义时,需在数字后加"m"或"M",如decimal d=1.255m。

  4、布尔类型:bool(true/false)。

  5、字符类型:char(16位)。

  6、枚举类型:enum(与c++中类似)。

  7、结构类型:struct(与c++中类似)

  注:在c#中,这些数据类型被定义在不同的命名空间。如"sbyte",即有别名"System.Sbyte",意味着在命名空间System中有对该数据类型的定义,所以要使用这些数据类型必须在文件开头声明"using System",即把该命名空间引入。其中,小数类型与浮点类型的不同之处在于它的精度 更高,float的精度为7位数,double的精度为15~16位,而decimal有29位的精度。并且,decimal与float、double之间没有隐式转换。

  二、引用类型

     1、类

  关键词:class

  类的数据成员:常量、域、事件。

  类的函数成员:方法、属性、索引指示器、运算符、构造函数,析构函数。

  c#类的一些特性:

  属性——这里的含义与c++或java中的略有不同,在c++或java中,这是数据成员的另一种称呼,在c#中却有另外的含义。有过c++或者java等编程经历的同学可能会遇到一种情况,类中某个数据成员既允许被访问又允许被修改(即有自定义的set和get两种成员函数去修改或访问它),其实在编程中这样的情况还是常见的,因此c#专门设计了类的属性简化操作。如下:

  class A{

  private int aa;

  public int Aa{

  get{

  return aa;

  }

  set{

  aa=value;

  }

  }

  }

  定义完成后,我们就可以通过下面操作get或set aa:

  class option

  {

  public static void Main(){

  A a=new A();

  p.Aa=125; //set aa的值为125

  Console.WriteLine(p.Aa);         //get到aa

  }

  }

  属性的声明可以只包含set或get中的任一个。

   一些特殊的类:

  object类:object类是所有类型的基类,c#中所有类型都是直接或间接从object类继承而来的。它被定义在命名空间System中,因此有别名System.Object。有如此特性:对于任何一个object变量,均可以赋以任何类型的值。

  string类:专门用于对字符串进行操作。

  注:关于类的具体内容留待后面学习中另做文章补充。

  2、委托

  关键词:delegate

  委托也称代表,相当于c#中的指针原型,与指针不同,委托是安全的。在声明委托时,只需要指定委托指向的原型类型即可。如果我们声明了一个委托,即对System.delegate做了一个扩展。如实例中,既可以委托静态方法,也可以委托非静态方法。

  委托声明原型举例: delegate string MyDelegate();

  实例:

  delegate string MyDelegate();

  class Person

  {

  public string Mydg_Normal()

  {

  return "非静态委托调用";

  }

  public static string Mydg_Static()

  {

  return "静态委托调用";

  }

  }

  class Program

  {

  static void Main(string[] args)

  {

  Person p = new Person();

  MyDelegate myDelegate = new MyDelegate(p.Mydg_Normal);

  Console.WriteLine(myDelegate());

  myDelegate = new MyDelegate(Person.Mydg_Static);

  Console.WriteLine(myDelegate());

  Console.ReadKey();    //使控制台在按任意键后退出

  }

  }

  输出:

  非静态委托调用

  静态委托调用

  3、数组

  数组的声明

  一维数组:int[] numners=new int[5];

  多维数组:string[,] names=new string[5,4];    //可以理解为5行4列二维数组

  数组的数组(交错数组):

  byte[][] scores=new byte[5][];

  for(int x=0;x<scores.Length;x++)

  {

  score[x]=new byte[x+1];

  }        //byte类型数组的默认值为0

  注:每种类型的数组基本上都有默认值,引用类型的数组默认值为null,可以声明为不分配内存的形式,但使用前必须初始化。

  数组初始化

     一维数组:int[] numbers=new int[5]{1,2,3,4,5};

  或者不指定数组大小——int[] numbers=new int[]{1,2,3,4,5};

  或者省略new——int[] numbers={1,2,3,4,5};

  多维数组:int[,] numbers=new int[3,2]{{1,2},{3,4},{5,6}};

  或者不指定数组大小——int[,] numbers=new int[,]{{1,2},{3,4},{5,6}};

  或者省略new——int[,] numbers={{1,2},{3,4},{5,6}};

  交错数组:int[][] numbers=new int[2][]{new int[]{2,3,4},new int[]{5,6,7,8,9}};

  或者不指定数组大小——int[][] numbers=new int[][]{new int[]{2,3,4},new int[]{5,6,7,8,9}};

  或者省略new——int[][] numbers={new int[]{2,3,4},new int[]{5,6,7,8,9}};

  三、装箱和拆箱

  int i=123;

  object box=i;    //装箱完毕

  int j=(int)box;    //拆箱完毕

  用途:与"is"条件判断关键词连用,可以依据对象类型,作出不同的操作。如下:

  public void function(object obj)

  {

  if(obj is int)

  {

  Console.WriteLine("obj是整型的");

  }

  else if (obj is char)

  {

  Console.WriteLine("obj是整型的");

  }

  else if (obj is long)

  {

  Console.WriteLine("obj是长整型的");

  }

  else if (obj is Person)        //Person是自定义类型

  {

  Console.WriteLine("obj是Person类型的");

  }

  }

  四、数据类型转换

  隐式转换——一种安全的类型转换。在值类型中,由低字节的类型向相同字节或高字节的类型转换,且一般遵循“有符号向有符号转换,无符号既可以转换为有符号又可以转换为无符号”的规则。

  举例:

  byte b = 1;

  short us = b;    //无符号字节类型转换为有符号短整型

  float f = 1.0f;

  double d = f;    //单精度转换为双精度

  显示转换——又叫强制类型转换。可强制使高字节类型向低字节类型转换,有可能会产生溢出。

  举例:

  int ii = 2000;

  byte ib = (byte)ii;    //4字节的整数类型向1字节的字节类型(最大值255)转换,发生溢出,最后结果为208。

  float f = 1.0f;

  decimal d = (decimal)f;    //单精度浮点数向小数类型转换

 
  希望能为您带来帮助,更多详情请继续关注我们洛阳微信营销

(非特殊说明,本文版权归原作者所有,转载请注明出处 )


九擎科技致力于为企业提供创意设计、网站建设、定制开发、运营及推广等全方位服务。
联系电话:0379-8088 8006
联系手机:15515315959
想在手机上、随时获取互联网前沿、设计资讯以及各种意想不到的"福利"吗?通过扫描二维码快速添加

分享到微信QQ空间QQ好友腾讯微博新浪微博0
上一篇:这些年,系统架构都经历了怎样的演变?
返回资讯列表
下一篇:PHP对文件进行加锁、解锁实例代码
12日
2018年07月

C#学习日志之数据类型

数据类型: 一、值类型 1、 整数类型: sbyte(有符号8位)、byte(无符号8位)、short(有符号16位)、ushort(无符号16位)、int(有符号32位)、uint(无符号...

20日
2018年06月

网站建设细节上的注意有哪些

网站建设工作在建设者看来是一件十分简单的事情,但是任何事情想要做好做大却是很难的。 洛阳网站建设公司 就根据网站建设和运营举例说明,网站运...

10日
2018年07月

关键词排名提升工具快速排名上首页真的有效吗

关键词排名是SEO优化工作的核心工作,网站还有获得排名后才能够获得搜索引擎的流量,进而流量才能够转化为用户或者价值,这一点在企业 网站优化 工...

09日
2018年07月

网站优化完成,资讯恢复更新

九擎科技网站经历了长达一周的优化维护,今天终于恢复正常,资讯将恢复更新,小伙伴们来试试看是不是有不同呢...

23日
2018年06月

企业门户网站建设有哪些必须要注重的要点?

当前,对于一个企业来说,建设企业门户网站的主要目的包括以下方面:宣传企业品牌形象、提升企业知名度;发布产品信息、获取潜在客户;寻求合作机...

27日
2018年06月

亟待攻克核心技术:算法欠账多 国产“大脑”爱出错

亟待攻克的核心技术 两台机器人分别控制双层托盘,让其不断地倾斜、转动,另一台机器人控制机械臂在托盘上十个障碍物间不停地穿行而不受阻碍。这段...

16日
2018年07月

Java对象和类

Java作为一种面向对象的语言。支持以下基本概念 *继承 *多态 *封装 *抽象 *类 *对象 *实例 *方法 *重载 对象:对象是类的一个实例。 类:类是一类对象抽象...

23日
2018年06月

APP开发过程中都需要解决哪些问题?

如今,APP开发成为了每个商业领域,在移动端较好的获取潜在客户和获得发展的方式。同时在发展迅速的移动行业中,如果想要迅速成为移动端的用户入口...

中国(河南)自由贸易试验区洛阳片区涧西区秦岭路卓阳科技园内 0379-8088 8006 0379-8088 8006 Copyright © 2005-2018 九擎科技 版权所有 豫ICP备17033118号-1
友情链接: 九擎科技