.NET数据类型具体都有哪些

发布时间:2021-10-29 17:25:10 作者:柒染
来源:亿速云 阅读:139

这篇文章将为大家详细讲解有关.NET数据类型具体都有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

.NET数据类型之字符串(String)

表示文本,即一系列 Unicode 字符。字符串是 Unicode 字符的有序集合,用于表示文本。 String 对象是 System.Char  对象的有序集合,用于表示字符串。 String 对象的值是该有序集合的内容,并且该值是不可变的(即,为只读)。String 对象的***大小内存中的为 2 GB  或大约 10 亿个字符。

string

一组字符

int number = Convert .ToInt32(strNumber);

字符串加@前缀

使用==和!=操作符进行比较时,引用类型比较的是内存中的对象,但string的相等性操作符被重新定义了,比较的是字符串的值。

string一旦初始化后不能改变,进行修改后得到的是新的string对象,因此string的滥用是极其的低效。

使用StringBuilder对字符串进行修改,修改的是本对象而非产生新对象。

.NET  数据类型之类(Class)

类是  C#  中功能最为强大的数据类型。像结构一样,类也定义了数据类型的数据和行为。然后,程序员可以创建作为此类的实例的对象。与结构不同,类支持继承,而继承是面向对象编程的基础部分。

构造函数是在创建给定类型的对象时执行的类方法,是在运行时调用的而非编译时,包括实例构造函数和静态构造函数。构造函数与类名相同,且不能有返回值。

使用this关键字进行串联构造函数调用,可以使用可选参数替代构造函数链,但是可选参数的语法只能在.NET4环境下运行。

析构函数用于析构类的实例,重新对象的Finalize()方法。 不能在结构中定义析构函数。 只能对类使用析构函数。一个类只能有一个析构函数。无法继承或重载析构函数。无法调用析构函数。  它们是被自动调用的。析构函数既没有修饰符,也没有参数,是隐式保护的。

类的实例化,使用new关键字进行实例化

对象初始化器只用少量的代码就可以创建对象并设置一些属性和公共字段,对象初始化时使用{},内部使用逗号分隔的指定值的列表,初始化列表中的每个成员都映射为正在初始化的对象中的公共字段或公共属性。

Point p = new Point{X=1,Y=2};

object 类型在 .NET Framework 中是 Object 的别名。 在 C#  的统一类型系统中,所有类型(预定义类型、用户定义类型、引用类型和值类型)都是直接或间接从 Object 继承的。 可以将任何类型的值赋给 object  类型的变量。 

将值类型的变量转换为对象的过程称为“装箱”。 

 将对象类型的变量转换为值类型的过程称为“拆箱”。

.NET  数据类型之指针类型(type*)

在不安全的上下文中,类型可以是指针类型以及值类型或引用类型。指针类型不继承 object,并且指针类型与 object  之间不存在转换。此外,装箱和取消装箱不支持指针。但是,允许在不同指针类型之间以及指针类型与整型之间进行转换。当在同一个声明中声明多个指针时,*  仅与基础类型一起使用,而不是作为每个指针名称的前缀。 指针不能指向引用或包含引用的结构,因为即使有指针指向对象引用,该对象引用也可能会被执行垃圾回收。GC  并不注意是否有任何类型的指针指向对象。

示例说明

int* p

p 是指向整数的指针

int** p

p 是指向整数的指针的指针

int*[] p

p 是指向整数的指针的一维数组

char* p

p 是指向字符的指针

void* p

p  是指向未知类型的指针

运算符/语句用途

*

执行指针间接寻址。

->

通过指针访问结构的成员。

[]

对指针建立索引。

&

获取变量的地址。

++ 和 --

递增或递减指针。

加、减

执行指针算法。

==、!=、<、>、<= 和 >=

比较指针。

stackalloc

在堆栈上分配内存。

fixed 语句

临时固定变量以便可以找到其地址。

任何指针类型

void*

null

任何指针类型

任何指针类型

所有其他指针类型

sbyte、byte、short、ushort、int、uint、long 或  ulong

任何指针类型

任何指针类型

sbyte、byte、short、ushort、int、uint、long 或  ulong

.NET 数据类型之动态类型(Dynamic)

     在通过 dynamic 类型实现的操作中,该类型的作用是绕过编译时类型检查,  改为在运行时解析这些操作。 dynamic 类型简化了对 COM API(例如 Office Automation API)、动态 API(例如  IronPython 库)和 HTML 文档对象模型 (DOM) 的访问。

     在大多数情况下,dynamic 类型与 object 类型的行为是一样的。  但是,不会用编译器对包含 dynamic 类型表达式的操作进行解析或类型检查。 编译器将有关该操作信息打包在一起,并且该信息以后用于计算运行时操作。  在此过程中,类型 dynamic 的变量会编译到类型 object 的变量中。 因此,类型 dynamic  只在编译时存在,在运行时则不存在。

在显式类型转换中,作为转换的目标类型。

static void convertToDynamic()  {      dynamic d;      int i = 20;      d = (dynamic)i;      Console.WriteLine(d);      string s = "Example string.";      d = (dynamic)s;      Console.WriteLine(d);      DateTime dt = DateTime.Today;      d = (dynamic)dt;      Console.WriteLine(d);  }

在以类型充当值(如 is 运算符或 as 运算符右侧)或者作为 typeof  的参数成为构造类型的一部分的任何上下文中。 例如,可以在下列表达式中使用 dynamic。

int i = 8; dynamic d; d = i as dynamic; Console.WriteLine(typeof(List<dynamic>));

 .NET  数据类型之匿名类型(var)

匿名类型提供了一种方便的方法,可用来将一组只读属性封装到单个对象中,而无需首先显式定义一个类型。 类型名由编译器生成,并且不能在源代码级使用。  每个属性的类型由编译器推断。

可通过使用 new 运算符和对象初始值创建匿名类型。

  1. var v = new { Amount = 108, Message = "Hello" }; 

  2. var anonArray = new[] { new { name = "apple", diam = 4 }, new { name = "grape", diam = 1 }}; 

  3. var productQuery =  

  4.     from prod in products 

  5.     select new { prod.Color, prod.Price }; 

  6.  

  7. foreach (var v in productQuery) 

  8.     Console.WriteLine("Color={0}, Price={1}", v.Color, v.Price); 

  9. }

关于.NET数据类型具体都有哪些就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. python的数据类型都有哪些
  2. mysql的数据类型都有哪些

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

上一篇:如何解决实际的MySQL复制问题

下一篇:Mysql数据分组排名实现的示例分析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》