日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
.NET數(shù)據(jù)類型匯總

.NET數(shù)據(jù)類型之字符串(String)

成都創(chuàng)新互聯(lián)公司于2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目網(wǎng)站制作、成都做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元沅陵做網(wǎng)站,已為上家服務(wù),為沅陵各地企業(yè)和個人服務(wù),聯(lián)系電話:028-86922220

  • 字符串

表示文本,即一系列 Unicode 字符。字符串是 Unicode 字符的有序集合,用于表示文本。 String 對象是 System.Char 對象的有序集合,用于表示字符串。 String 對象的值是該有序集合的內(nèi)容,并且該值是不可變的(即,為只讀)。String 對象的***大小內(nèi)存中的為 2 GB 或大約 10 億個字符。

  • 關(guān)鍵字

string

  • 值范圍

一組字符

  • 解析數(shù)值
 
 
  1. int number = Convert .ToInt32(strNumber);
  • 格式化
    • 保留2位小數(shù)
    •     
          
      1. bc.FRetailPrice = String.Format("{0:N2}", Convert.ToDecimal(Math.Round(double.Parse(dgvBarcode.Rows[i].Cells["FRetailPrice"].Value.ToString()),2))).ToString();
  • 常用方法
    • Trim:去除字符串頭尾兩端的指定字符
    • Concat:字符串拼接
  • 轉(zhuǎn)義字符
    • \' 單引號
    • \" 雙引號
    • \\ 反斜杠
    • \0 空
    • \a 警告
    • \b 退格
    • \f 換頁
    • \n 換行
    • \r 回車
    • \t 水平制表符
    • \v 垂直制表符
  • 逐字字符串

字符串加@前綴

  • 比較
    • 比較空值
      • string.IsNullOrEmpty(str1)
      • s == string.Empty
      • s.Length == 0
      • s == ""
    • 比較相等性

使用==和!=操作符進(jìn)行比較時,引用類型比較的是內(nèi)存中的對象,但string的相等性操作符被重新定義了,比較的是字符串的值。

  • 不可變性

string一旦初始化后不能改變,進(jìn)行修改后得到的是新的string對象,因此string的濫用是極其的低效。

  • StringBuilder

使用StringBuilder對字符串進(jìn)行修改,修改的是本對象而非產(chǎn)生新對象。

#p#

.NET 數(shù)據(jù)類型之類(Class)

類是 C# 中功能最為強(qiáng)大的數(shù)據(jù)類型。像結(jié)構(gòu)一樣,類也定義了數(shù)據(jù)類型的數(shù)據(jù)和行為。然后,程序員可以創(chuàng)建作為此類的實例的對象。與結(jié)構(gòu)不同,類支持繼承,而繼承是面向?qū)ο缶幊痰幕A(chǔ)部分。

  • 構(gòu)造函數(shù)

構(gòu)造函數(shù)是在創(chuàng)建給定類型的對象時執(zhí)行的類方法,是在運(yùn)行時調(diào)用的而非編譯時,包括實例構(gòu)造函數(shù)和靜態(tài)構(gòu)造函數(shù)。構(gòu)造函數(shù)與類名相同,且不能有返回值。

  • 構(gòu)造函數(shù)鏈

使用this關(guān)鍵字進(jìn)行串聯(lián)構(gòu)造函數(shù)調(diào)用,可以使用可選參數(shù)替代構(gòu)造函數(shù)鏈,但是可選參數(shù)的語法只能在.NET4環(huán)境下運(yùn)行。

  • 靜態(tài)構(gòu)造函數(shù)
  • 析構(gòu)函數(shù)(終結(jié)器)

析構(gòu)函數(shù)用于析構(gòu)類的實例,重新對象的Finalize()方法。 不能在結(jié)構(gòu)中定義析構(gòu)函數(shù)。 只能對類使用析構(gòu)函數(shù)。一個類只能有一個析構(gòu)函數(shù)。無法繼承或重載析構(gòu)函數(shù)。無法調(diào)用析構(gòu)函數(shù)。 它們是被自動調(diào)用的。析構(gòu)函數(shù)既沒有修飾符,也沒有參數(shù),是隱式保護(hù)的。

  • 關(guān)鍵字
    • new:創(chuàng)建新對象
    • this:實例對象
    • base:基類對象
    • static:靜態(tài)
  • 默認(rèn)訪問修飾符
  • 類:隱式內(nèi)部
  • 默認(rèn)構(gòu)造函數(shù):隱式私有
  • 對象

類的實例化,使用new關(guān)鍵字進(jìn)行實例化

  • 對象初始化器

對象初始化器只用少量的代碼就可以創(chuàng)建對象并設(shè)置一些屬性和公共字段,對象初始化時使用{},內(nèi)部使用逗號分隔的指定值的列表,初始化列表中的每個成員都映射為正在初始化的對象中的公共字段或公共屬性。

  • 代碼示例
 
 
  1. Point p = new Point{X=1,Y=2};
  • Object

object 類型在 .NET Framework 中是 Object 的別名。 在 C# 的統(tǒng)一類型系統(tǒng)中,所有類型(預(yù)定義類型、用戶定義類型、引用類型和值類型)都是直接或間接從 Object 繼承的。 可以將任何類型的值賦給 object 類型的變量。

  • 裝箱

將值類型的變量轉(zhuǎn)換為對象的過程稱為“裝箱”。

  • 拆箱

 將對象類型的變量轉(zhuǎn)換為值類型的過程稱為“拆箱”。

#p#

.NET 數(shù)據(jù)類型之指針類型(type*)

  • 指針類型

在不安全的上下文中,類型可以是指針類型以及值類型或引用類型。指針類型不繼承 object,并且指針類型與 object 之間不存在轉(zhuǎn)換。此外,裝箱和取消裝箱不支持指針。但是,允許在不同指針類型之間以及指針類型與整型之間進(jìn)行轉(zhuǎn)換。當(dāng)在同一個聲明中聲明多個指針時,* 僅與基礎(chǔ)類型一起使用,而不是作為每個指針名稱的前綴。 指針不能指向引用或包含引用的結(jié)構(gòu),因為即使有指針指向?qū)ο笠茫搶ο笠靡部赡軙粓?zhí)行垃圾回收。GC 并不注意是否有任何類型的指針指向?qū)ο蟆?/p>

  • 語法
  •    
      
    1. type* identifier;void* identifier; 
    2. int* p1, p2, p3; 
    3. int number;int* p = &number;
    4. char* charPointer = stackalloc char[123];for (int i = 65; i < 123; i++){charPointer[i] = (char)i;}
  • 指針類型聲明
示例 說明

int* p

p 是指向整數(shù)的指針

int** p

p 是指向整數(shù)的指針的指針

int*[] p

p 是指向整數(shù)的指針的一維數(shù)組

char* p

p 是指向字符的指針

void* p

p 是指向未知類型的指針

  • 指針相關(guān)的運(yùn)算符和語句
運(yùn)算符/語句 用途

*

執(zhí)行指針間接尋址。

->

通過指針訪問結(jié)構(gòu)的成員。

[]

對指針建立索引。

&

獲取變量的地址。

++ 和 --

遞增或遞減指針。

加、減

執(zhí)行指針?biāo)惴ā?/p>

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

比較指針。

stackalloc

在堆棧上分配內(nèi)存。

fixed 語句

臨時固定變量以便可以找到其地址。

  • 指針轉(zhuǎn)換
    • 隱式指針轉(zhuǎn)換

任何指針類型

void*

null

任何指針類型

    • 顯示指針轉(zhuǎn)換

任何指針類型

所有其他指針類型

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

任何指針類型

任何指針類型

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

  • 代碼示例
    • 指針訪問成員
    •         
          
      1. truct CoOrds{
      2.     public int x;
      3.     public int y;
      4. }
      5. class AccessMembers
      6. {
      7.     static void Main() 
      8.     {
      9.         CoOrds home;
      10.         unsafe 
      11.         {
      12.             CoOrds* p = &home;
      13.             p->x = 25;
      14.             p->y = 12;
      15.             System.Console.WriteLine("The coordinates are: x={0}, y={1}", p->x, p->y );
      16.         }
      17.     }
      18. }
    • 指針訪問數(shù)組元素
    •         
          
      1. class Pointers
      2. {
      3.     unsafe static void Main() 
      4.     {
      5.         char* charPointer = stackalloc char[123];
      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.     }
      22. }
    • 指針復(fù)制字節(jié)數(shù)組
    •         
          
      1. class TestCopy
      2. {
      3.     static unsafe void Copy(byte[] src, int srcIndex, byte[] dst, int dstIndex, int count)
      4.     {
      5.         if (src == null || srcIndex < 0 ||
      6.             dst == null || dstIndex < 0 || count < 0)
      7.         {
      8.             throw new System.ArgumentException();
      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.         for (int i = 0; i < 100; ++i)
      39.         {
      40.             a[i] = (byte)i;
      41.         }
      42.         Copy(a, 0, b, 0, 100);
      43.         System.Console.WriteLine("The first 10 elements are:");
      44.         for (int i = 0; i < 10; ++i) 
      45.         {
      46.             System.Console.Write(b[i] + " ");
      47.         }
      48.         System.Console.WriteLine("\n");
      49.     }
      50. }

#p#

.NET 數(shù)據(jù)類型之動態(tài)類型(Dynamic)

  • Dynamic

     在通過 dynamic 類型實現(xiàn)的操作中,該類型的作用是繞過編譯時類型檢查, 改為在運(yùn)行時解析這些操作。 dynamic 類型簡化了對 COM API(例如 Office Automation API)、動態(tài) API(例如 IronPython 庫)和 HTML 文檔對象模型 (DOM) 的訪問。
     在大多數(shù)情況下,dynamic 類型與 object 類型的行為是一樣的。 但是,不會用編譯器對包含 dynamic 類型表達(dá)式的操作進(jìn)行解析或類型檢查。 編譯器將有關(guān)該操作信息打包在一起,并且該信息以后用于計算運(yùn)行時操作。 在此過程中,類型 dynamic 的變量會編譯到類型 object 的變量中。 因此,類型 dynamic 只在編譯時存在,在運(yùn)行時則不存在。

  • 代碼示例
    • 在聲明中,作為屬性、字段、索引器、參數(shù)、返回值或類型約束的類型。 下面的類定義在幾個不同的聲明中使用 dynamic。
    •      
          
      1. class ExampleClass
      2. {
      3.     static dynamic field;
      4.     dynamic prop { get; set; }
      5.     public dynamic exampleMethod(dynamic d)
      6.     {
      7.         dynamic local = "Local variable";
      8.         int two = 2;
      9.         if (d is int)
      10.         {
      11.             return local;
      12.         }
      13.         else
      14.         {
      15.             return two;
      16.         }
      17.     }
      18. }

在顯式類型轉(zhuǎn)換中,作為轉(zhuǎn)換的目標(biāo)類型。

 
 
  1. static void convertToDynamic() 
  2.     dynamic d; 
  3.     int i = 20; 
  4.     d = (dynamic)i; 
  5.     Console.WriteLine(d); 
  6.     string s = "Example string."; 
  7.     d = (dynamic)s; 
  8.     Console.WriteLine(d); 
  9.     DateTime dt = DateTime.Today; 
  10.     d = (dynamic)dt; 
  11.     Console.WriteLine(d); 

在以類型充當(dāng)值(如 is 運(yùn)算符或 as 運(yùn)算符右側(cè))或者作為 typeof 的參數(shù)成為構(gòu)造類型的一部分的任何上下文中。 例如,可以在下列表達(dá)式中使用 dynamic。

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

#p#

 .NET 數(shù)據(jù)類型之匿名類型(var)

  • 匿名類型 

匿名類型提供了一種方便的方法,可用來將一組只讀屬性封裝到單個對象中,而無需首先顯式定義一個類型。 類型名由編譯器生成,并且不能在源代碼級使用。 每個屬性的類型由編譯器推斷。

可通過使用 new 運(yùn)算符和對象初始值創(chuàng)建匿名類型。

  • 限制條件
    • 沒有控制匿名類型的名字
    • 匿名類型繼承自O(shè)bject
    • 匿名類型的字段和屬性總是只讀的
    • 匿名類型不支持事件、自定義方法、自定義操作符和自定義重寫
    • 匿名類型是隱式封閉的
    • 匿名類型的實例創(chuàng)建只使用默認(rèn)構(gòu)造函數(shù)
  • 語法
 
 
  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. foreach (var v in productQuery)
  7. {
  8.     Console.WriteLine("Color={0}, Price={1}", v.Color, v.Price);
  9. }

分享名稱:.NET數(shù)據(jù)類型匯總
鏈接分享:http://www.5511xx.com/article/cdjsddi.html