广告
返回顶部
首页 > 资讯 > 精选 >.NET数据类型具体都有哪些
  • 317
分享到

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

2023-06-17 08:06:26 317人浏览 安东尼
摘要

这篇文章将为大家详细讲解有关.net数据类型具体都有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。.NET数据类型之字符串(String)字符串表示文本,即一系列 Unicode 字符。

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

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

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

  • 关键字

string

  • 值范围

一组字符

  • 解析数值

int number = Convert .ToInt32(strNumber);
  • 格式化

    • 保留2位小数


    1. bc.FRetailPrice = String.FORMat("{0:N2}", Convert.ToDecimal(Math.Round(double.Parse(dgvBarcode.Rows[i].Cells["FRetailPrice"].Value.ToString()),2))).ToString(); 

  • 常用方法

    • Trim:去除字符串头尾两端的指定字符

    • Concat:字符串拼接

  • 转义字符

    • \' 单引号

    • \" 双引号

    • \\ 反斜杠

    • \0 空

    • \a 警告

    • \b 退格

    • \f 换页

    • \n 换行

    • \r 回车

    • \t 水平制表符

    • \v 垂直制表符

  • 逐字字符串

字符串加@前缀

  • 比较

    • string.IsNullOrEmpty(str1)

    • s == string.Empty

    • s.Length == 0

    • s == ""

    • 比较空值

    • 比较相等性

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

  • 不可变性

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

  • StringBuilder

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

.NET  数据类型之类(Class)

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

  • 构造函数

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

  • 构造函数链

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

  • 静态构造函数

  • 析构函数(终结器)

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

  • 关键字

    • new:创建新对象

    • this:实例对象

    • base:基类对象

    • static:静态

  • 默认访问修饰符

  • 类:隐式内部

  • 默认构造函数:隐式私有

  • 对象

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

  • 对象初始化器

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

  • 代码示例

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

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

  • 装箱

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

  • 拆箱

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

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

  • 指针类型

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

  • 语法

  • type* identifier;void* identifier;  int* p1, p2, p3;  int number;int* p = &number; char* charPointer = stackalloc char[123];for (int i = 65; i < 123; i++){charPointer[i] = (char)i;}
  • 指针类型声明

示例说明

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

  • 代码示例

    • 指针访问成员


    • 指针访问数组元素


    • 指针复制字节数组


    1. class TestCopy 

    2.     static unsafe void Copy(byte[] src, int srcIndex, byte[] dst, int dstIndex, int count) 

    3.     { 

    4.         if (src == null || srcIndex < 0 || 

    5.             dst == null || dstIndex < 0 || count < 0) 

    6.         { 

    7.             throw new System.ArgumentException(); 

    8.         } 

    9.  

    10.         int srcsrcLen = src.Length; 

    11.         int dstdstLen = dst.Length; 

    12.         if (srcLen - srcIndex < count || dstLen - dstIndex < count) 

    13.         { 

    14.             throw new System.ArgumentException(); 

    15.         } 

    16.         fixed (byte* pSrc = src, pDst = dst) 

    17.         { 

    18.             byte* ps = pSrc; 

    19.             byte* pd = pDst; 

    20.             for (int i = 0 ; i < count / 4 ; i++) 

    21.             { 

    22.                 *((int*)pd) = *((int*)ps); 

    23.                 pd += 4; 

    24.                 ps += 4; 

    25.             } 

    26.             for (int i = 0; i < count % 4 ; i++) 

    27.             { 

    28.                 *pd = *ps; 

    29.                 pd++; 

    30.                 ps++; 

    31.             } 

    32.         } 

    33.     } 

    34.     static void Main() 

    35.     { 

    36.         byte[] a = new byte[100]; 

    37.         byte[] b = new byte[100]; 

    38.  

    39.         for (int i = 0; i < 100; ++i) 

    40.         { 

    41.             a[i] = (byte)i; 

    42.         } 

    43.         Copy(a, 0, b, 0, 100); 

    44.         System.Console.WriteLine("The first 10 elements are:"); 

    45.         for (int i = 0; i < 10; ++i)  

    46.         { 

    47.             System.Console.Write(b[i] + " "); 

    48.         } 

    49.         System.Console.WriteLine("\n"); 

    50.     } 

    1. class Pointers 

    2.     unsafe static void Main()  

    3.     { 

    4.         char* charPointer = stackalloc char[123]; 

    5.  

    6.         for (int i = 65; i < 123; i++) 

    7.         { 

    8.             charPointer[i] = (char)i; 

    9.         } 

    10.         System.Console.WriteLine("Uppercase letters:"); 

    11.         for (int i = 65; i < 91; i++) 

    12.         { 

    13.             System.Console.Write(charPointer[i]); 

    14.         } 

    15.         System.Console.WriteLine(); 

    16.         System.Console.WriteLine("Lowercase letters:"); 

    17.         for (int i = 97; i < 123; i++) 

    18.         { 

    19.             System.Console.Write(charPointer[i]); 

    20.         } 

    21.     } 

    1. truct CoOrds{ 

    2.     public int x; 

    3.     public int y; 

    4. class AcceSSMembers 

    5.     static void Main()  

    6.     { 

    7.         CoOrds home; 

    8.         unsafe  

    9.         { 

    10.             CoOrds* p = &home; 

    11.             p->x = 25; 

    12.             p->y = 12; 

    13.             System.Console.WriteLine("The coordinates are: x={0}, y={1}", p->x, p->y ); 

    14.         } 

    15.     } 

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

  • Dynamic

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

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

  • 代码示例

    • 在声明中,作为属性、字段、索引器、参数、返回值或类型约束的类型。  下面的类定义在几个不同的声明中使用 dynamic。


    1. class ExampleClass 

    2.     static dynamic field; 

    3.     dynamic prop { get; set; } 

    4.     public dynamic exampleMethod(dynamic d) 

    5.     { 

    6.         dynamic local = "Local variable"; 

    7.         int two = 2; 

    8.         if (d is int) 

    9.         { 

    10.             return local; 

    11.         } 

    12.         else 

    13.         { 

    14.             return two; 

    15.         } 

    16.     } 

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

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 运算符和对象初始值创建匿名类型。

  • 限制条件

    • 没有控制匿名类型的名字

    • 匿名类型继承自Object

    • 匿名类型的字段和属性总是只读的

    • 匿名类型不支持事件、自定义方法、自定义操作符和自定义重写

    • 匿名类型是隐式封闭的

    • 匿名类型的实例创建只使用默认构造函数

  • 语法

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

--结束END--

本文标题: .NET数据类型具体都有哪些

本文链接: https://www.lsjlt.com/news/287939.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • .NET数据类型具体都有哪些
    这篇文章将为大家详细讲解有关.NET数据类型具体都有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。.NET数据类型之字符串(String)字符串表示文本,即一系列 Unicode 字符。...
    99+
    2023-06-17
  • .Net Framework类型基础的具体内容有哪些
    这期内容当中小编将会给大家带来有关.Net Framework类型基础的具体内容有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。.Net Framework作为一个开发环境对程序员来说是非常重要的。我...
    99+
    2023-06-17
  • mysql数据类型都有哪些
    本篇文章给大家分享的是有关mysql数据类型都有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 数值类...
    99+
    2022-10-18
  • JavaScript数据类型都有哪些
    这篇文章将为大家详细讲解有关JavaScript数据类型都有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、基本JavaScript数据类型在Java...
    99+
    2022-10-19
  • mysql的数据类型都有哪些
    本篇文章给大家分享的是有关mysql的数据类型都有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。mysql的数据类型都有哪些1.text类...
    99+
    2022-10-18
  • .Net运算符和基础语句具体都有哪些
    本篇文章给大家分享的是有关.Net运算符和基础语句具体都有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 .Net运算符运算符C#  提供大量运算符,这...
    99+
    2023-06-17
  • javascript都有哪些基本数据类型
    本篇内容主要讲解“javascript都有哪些基本数据类型”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript都有哪些基本数据类型”吧! ...
    99+
    2022-10-19
  • Redis中的数据类型都有哪些
    Redis中的数据类型都有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。STRINGSTRING是redis中最基本的数据类型,redis中的STRING类...
    99+
    2023-06-19
  • VB.NET基本数据类型都有哪些
    VB.NET基本数据类型都有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。VB.NET基本数据类型的重要方法和属性举例 Dim i As In...
    99+
    2023-06-17
  • php数组都有哪些类型
    php中数组的类型有普通数组、数值数组、关联数组和多维数组四种类型普通数组php中普通数组是指不能直接使用echo输出的数组$person = array("张三","李四","王五"); echo $person[0];var_dump ...
    99+
    2022-10-07
  • .NET开发相关工具都有哪些
    本篇文章为大家展示了.NET开发相关工具都有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。本文向你介绍 8 款跟 .NET 开发相关的一些工具。1) Open Source &ndash...
    99+
    2023-06-17
  • Linux命令具体都有有哪些
    这篇文章主要为大家分析了Linux命令具体都有有哪些的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“Linux命令具体都有有哪些”的知识吧。Linux是一套免...
    99+
    2023-06-28
  • Go语言中的Windows数据类型都有哪些?
    Go语言是一门跨平台的编程语言,可以在不同的操作系统上进行开发。在Windows操作系统上,Go语言提供了一些专门用于处理Windows数据类型的库。本文将介绍Go语言中的Windows数据类型及其使用方法。 一、Windows数据类型 在...
    99+
    2023-09-12
    windows 数据类型 关键字
  • web挖掘都有哪些类型
    Web挖掘可以分为以下几种类型:1. 网页内容挖掘:从网页中提取有用信息,如文本、图片、视频等。2. 网页结构挖掘:分析网页的结构,...
    99+
    2023-09-09
    web
  • javascript都有哪些事件类型
    本篇内容介绍了“javascript都有哪些事件类型”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2022-10-19
  • MySQL字段类型都有哪些
    本篇文章为大家展示了MySQL字段类型都有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.日期和时间数据类型 MySQL数据类型 含义 ...
    99+
    2022-10-18
  • ASP.NET Web控件数据网格列类型都有哪些
    本篇内容主要讲解“ASP.NET Web控件数据网格列类型都有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ASP.NET Web控件数据网格列类型都有哪些”吧!ASP.NET Web控件数...
    99+
    2023-06-18
  • Linux目录权限具体都有哪些
    Linux目录权限具体都有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。目录的读权限位意味着可以列出其中的内容。写权限位意味着可以在该目录中创建文件,执行权限位则意味着搜索...
    99+
    2023-06-16
  • 云服务器都有哪些类型
    云服务器是一种虚拟的、可弹性扩展的服务器,通常用于构建私有云、公有云或混合云。以下是常见的云服务器类型: 公共云 (Public Cloud):公共云服务器是为多个用户和应用程序提供支持的服务,通常提供高可用性、高性能和易于管理的基础设...
    99+
    2023-10-26
    都有哪些 类型 服务器
  • Java字符串问题具体都有哪些
    Java字符串问题具体都有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。下面我为大家总结了10条Java开发者经常会提的关于Java字符串的问题,如果你也是Java初学者,...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作