欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#基本語(yǔ)法簡(jiǎn)介

 更新時(shí)間:2022年04月10日 16:26:41   作者:Ruby_Lu  
本文詳細(xì)講解了C#的基本語(yǔ)法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一.基礎(chǔ)語(yǔ)法

1.C#區(qū)分大小寫(xiě),所以myVar和MyVar是兩個(gè)不同的變量。
2.每個(gè)C#可執(zhí)行文件(如控制臺(tái)應(yīng)用程序,Windows應(yīng)用程序和Windows服務(wù))都必須有一個(gè)入口點(diǎn)————Main()(M大寫(xiě))

  public static void Main()
  {
  //do something
  }

在程序啟動(dòng)時(shí)調(diào)用這個(gè)方法。該方法要么沒(méi)有返回值(void),要么返回一個(gè)整數(shù)(int)

二.變量

1.編譯器不允許在表達(dá)式中使用未初始化的變量。如果變量是類或結(jié)構(gòu)中的字段,如果沒(méi)有初始化,創(chuàng)建這些變量時(shí),其默認(rèn)值就是0。
2.類型推斷
類型推斷(type inference)使用var關(guān)鍵字。編譯器可以根據(jù)變量的初始化值“推斷”變量的類型。var somenum = 0;即使somenum從來(lái)沒(méi)有聲明為int,編譯器也可以確定,只要somenum在其作用域內(nèi),就是一個(gè)int.聲明了變量,推斷出了類型后,就不能改變變量類型了。變量的類型確定后,就遵循其它變量類型遵循的強(qiáng)類型化規(guī)則。
3.變量的作用域
變量的作用域是訪問(wèn)該變量的代碼區(qū)域。只要變量的作用域是程序的不同部分就不會(huì)有問(wèn)題。
(1).局部變量的作用域沖突

  public static int Main()
  {
      int j =20;
      for(int i=0;i<20;i++)
      {
      int j = 30;
      // do something
      }
  }

編譯時(shí)會(huì)報(bào)錯(cuò),因?yàn)樵贛ain()方法作用域內(nèi)有兩個(gè)變量j,編譯器無(wú)法區(qū)分這兩個(gè)變量。
(2).字段和局部變量的作用域沖突
某些情況下可以區(qū)分名稱相同,作用域相同的兩個(gè)標(biāo)識(shí)符。原因是C#在變量之間有一個(gè)基本的區(qū)分,它把在類級(jí)別聲明的變量看作字段,而把在方法中聲明的變量看作局部變量。

  class Program
  {
      int j = 20;
      static void Main(string[] args)
      {
        int j = 30;
        Console.WriteLine(j);
        Console.ReadKey();
      }
  }

雖然在Main()方法的作用域內(nèi)聲明了兩個(gè)j,這段代碼也會(huì)編譯。在類級(jí)別上定義的j,在該類刪除前是不會(huì)超出作用域的,在Main()中聲明的j隱藏了同名的類級(jí)別變量,所以運(yùn)行代碼時(shí)會(huì)顯示30.

三.常量

顧名思義,常量是其值在使用過(guò)程中不會(huì)發(fā)生改變的變量。在聲明和初始化變量時(shí),在變量的前面加上關(guān)鍵字const,就可以把該變量指定為一個(gè)常量:const int a =100;
常量的特點(diǎn);

  • *常量必須在聲明時(shí)初始化。指定了值之后就不能改寫(xiě)了。
  • *常量的值必須能在編譯時(shí)用于計(jì)算。因此不能用于從一個(gè)變量中提取的值來(lái)初始化常量。如果需要,應(yīng)使用只讀字段(后面介紹)。
  • *常量總是靜態(tài)的。但注意,不必(實(shí)際上不允許)在常量聲明中包含static

使用常量的好處:

  • *由于使用易于讀取的名稱(名稱的值易于理解)代替了較難讀取的數(shù)字或字符串,常量使程序變得更易于閱讀。
  • *常量使程序易于修改。當(dāng)常量的值需要修改時(shí),只需要把新值賦給這個(gè)常量,不必查找整個(gè)程序去修改。
  • *常量更容易避免程序出現(xiàn)錯(cuò)誤。如果在聲明常量的位置以外的地方給常量賦值,編譯器會(huì)報(bào)錯(cuò)。

四.CTS類型

C#認(rèn)可的基本預(yù)定義類型并沒(méi)有內(nèi)置于C#語(yǔ)言中,而是內(nèi)置于.NET Framework中。
例如,在C#中聲明一個(gè)int類型的數(shù)據(jù)時(shí),聲明的實(shí)際上是.NET結(jié)構(gòu)System.Int32的一個(gè)實(shí)例。這表示在語(yǔ)法上,可以把所有的基本數(shù)據(jù)類型看成支持某些方法的類。
把int i 轉(zhuǎn)化為string, string s = i.ToString();
在這種便利的語(yǔ)法背后,類型實(shí)際上仍存儲(chǔ)為基本類型?;绢愋驮诟拍钌嫌?NET 結(jié)構(gòu)表示,所以沒(méi)有性能損失。
C#有15個(gè)預(yù)定義類型,string,object是引用類型。

五.枚舉

  public enum TimeDay
  {
      Morning=0,
      Afternoon = 1,
      Evening=2
  }

1.枚舉是用戶定義的整數(shù)類型。
2.從長(zhǎng)遠(yuǎn)來(lái)看,創(chuàng)建枚舉可以節(jié)省大量時(shí)間,減少許多麻煩。使用枚舉比使用整數(shù)的優(yōu)勢(shì):

  • *枚舉可以使代碼更易于維護(hù),有助于確保給變量指定合法的,期望的值;
  • *枚舉使代碼更清晰,用描述性的名稱表示整數(shù)值,而不是用含義模糊,變化多端的數(shù)來(lái)表示;

3.在C#中,枚舉的真正強(qiáng)大之處是它們?cè)诤笈_(tái)會(huì)實(shí)例化為派生于基類System.Enum的結(jié)構(gòu)。這表示可以對(duì)它們調(diào)用方法,執(zhí)行有用的任務(wù)。

TimeDay td =TimeDay.Afternoon;
Console.WriteLine((td.ToString());

注意因?yàn)?NET Framework的執(zhí)行方式,在語(yǔ)法上把枚舉當(dāng)成結(jié)構(gòu)不會(huì)造成性能損失。實(shí)際上,一旦代碼編譯好,枚舉就成為基本類型,與int和float類似。
4.從字符串中獲取枚舉值

TimeDay td = (TimeDay)Enum.Parse(typeof(TimeDay),"afternoon",true);
Console.WriteLine((int)td);

要從字符串中轉(zhuǎn)換,需要使用靜態(tài)方法Enum.Parse,第一個(gè)參數(shù)是要使用的枚舉類型,第二個(gè)是要轉(zhuǎn)換的字符串,第三個(gè)是指定在轉(zhuǎn)換時(shí)是否忽略大小寫(xiě)。
Enum.Parse方法實(shí)際上返回一個(gè)對(duì)象引用(一個(gè)字符串)————我們需要把這個(gè)字符串顯示轉(zhuǎn)換為需要的枚舉類型(是一個(gè)拆箱操作)。

六.名稱空間

  • 1.名稱空間提供了一種組織相關(guān)類和其它類型的方式。與文件和組件不同,名稱空間是一種邏輯組合,而不是物理組合。
  • 2.不允許聲明嵌套在另一個(gè)名稱空間中的多部分的名稱空間。
  • 3.名稱空間與程序集無(wú)關(guān)。同一個(gè)程序集中可以有不同的名稱空間,也可以在不同的程序集中定義同一個(gè)名稱空間中的類型。
  • 4.名稱空間的別名

如果名稱空間的名稱很長(zhǎng),又要在代碼中多次引用,但不希望該名稱空間的名稱包含在using指令中(例如,避免類名沖突),就可以給
該名稱空間指定一個(gè)別名:

  using System.Text;
  using System.Threading.Tasks;

  namespace Wrox.ProC.basic
  {
    class NameSpaceEx
    {

    }
  }

  namespace ConsoleApplication1
  {
    using Intro = Wrox.ProC.basic;//給Wrox.ProC.basic指定別名Intro
    class Program
    {

      static void Main(string[] args)
      {
        Intro::NameSpaceEx nex = new Intro.NameSpaceEx();//實(shí)例化NameSpaceEx對(duì)象,要使用::修飾符
      }


    }
  }

七.Main()方法

C#程序是從Main()方法開(kāi)始執(zhí)行的,這個(gè)方法必須是類或結(jié)構(gòu)的靜態(tài)方法,并且其返回類型必須是int或void。

1.多個(gè)Main()方法

在編譯C#控制臺(tái)或Windows應(yīng)用程序時(shí),默認(rèn)情況下,編譯器會(huì)在類中查找與上述簽名匹配的Main()方法,并使這個(gè)類方法稱為程序的入口。
如果有多個(gè)Main()方法,編譯器就會(huì)報(bào)錯(cuò)。

  namespace Wrox
  {
    class Client
    {
      public static int Main()
      {
        MathEx.Main();
        return 0;
      }
    }

    class MathEx
    {
      static int Add(int x,int y)
      {
        return x+y;
      }

      public static int Main()
      {
        int i = Add(5,10);
        return i;
      }
    }
  }

但是可以使用/main選項(xiàng),后跟Main()方法所屬類的全名(包括名稱空),明確告訴編譯器把哪個(gè)方法作為程序的入口:

csc ConsoleApplication1.cs /main:Wrox.MathEx

2.給Main()方法傳遞參數(shù)

在調(diào)用程序時(shí),可以讓CLR包含一個(gè)參數(shù),將命令行參數(shù)傳遞給程序。這個(gè)參數(shù)是一個(gè)字符串?dāng)?shù)組,傳統(tǒng)上稱為args(但C#可以接受任何名稱)。

  class Program
  {
    static void Main(string[] args)
    {
      for (int i = 0; i < args.Length; i++)
      {
        Console.WriteLine(args[i]);
      }

    }
  }

使用命令行就可以編譯這段代碼。

  ConsoleApplication1 a b c
  a
  b
  c

八.C#預(yù)處理器指令

C#預(yù)處理器指令不會(huì)轉(zhuǎn)化為可執(zhí)行代碼中的命令,但會(huì)影響編譯過(guò)程的各個(gè)方面。例如,使用C#預(yù)處理器指令可以禁止編譯器編譯代碼的某一部分。
如果計(jì)劃發(fā)布兩個(gè)版本的代碼,即基本代碼和擁有更多功能的企業(yè)版本,就可以使用預(yù)處理器指令。
C#提供了其它機(jī)制來(lái)實(shí)現(xiàn)C++指令的功能,如定制特性。C#并沒(méi)有一個(gè)像C++那樣的獨(dú)立預(yù)處理器,所謂的預(yù)處理器指令實(shí)際上是由編譯器處理的。
盡管這樣,C#仍保留了一些預(yù)處理器指令名稱,因?yàn)檫@些命令會(huì)讓人覺(jué)得就是預(yù)處理器。

1.#define和#undef

#define DEBUG

它告訴編譯器存在給定名稱的符號(hào),類似聲明一個(gè)變量,但沒(méi)有真正的值,只是存在而已。這個(gè)符號(hào)不是實(shí)際代碼的一部分,而只是在編譯器編譯代碼
時(shí)存在。在C#代碼中沒(méi)有任何意義。

#undef DEBUG

刪除符號(hào)
#define 本身沒(méi)有什么用,與其它預(yù)處理器指令(特別是#if)結(jié)合使用時(shí),它的功能就很強(qiáng)大。

2.#if,#elif(=else if),#else和#endif

這些指令告訴編譯器是否要編譯某個(gè)代碼塊

  #if DEBUG
  //do something
  #endif

#if,#elif還支持邏輯運(yùn)算符“!”,"==","!=","||",與或...

3.#warning, #error

當(dāng)編譯器遇到它們時(shí),會(huì)分別產(chǎn)生這兩個(gè)指令后面的文本作為警告或錯(cuò)誤。

  #if DEBUG
  #error "you didnot define DEBUG"
  #endif
  #warning "dont forget to remove"

4.#region和#endregion

#region和#endregion用于把一段代碼標(biāo)記為又給定名稱的一個(gè)塊

  #region Member Field
  int x;
  double d;
  #endregion

它們可以被某些編譯器識(shí)別。

5.#pragma

#pragma指令可以抑制或還原指定的編譯警告。

  #pragma warning disable
  int i;
  #pragma warning restore

到此這篇關(guān)于C#基本語(yǔ)法的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Unity實(shí)現(xiàn)跑馬燈效果的示例代碼

    Unity實(shí)現(xiàn)跑馬燈效果的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用Unity實(shí)現(xiàn)跑馬燈效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • WinForm ToolTip使用方法小結(jié)

    WinForm ToolTip使用方法小結(jié)

    這篇文章主要介紹了WinForm ToolTip使用方法小結(jié),對(duì)C#初學(xué)者有一定的借鑒參考價(jià)值,需要的朋友可以參考下
    2014-08-08
  • C# log4net日志庫(kù)的用法小結(jié)

    C# log4net日志庫(kù)的用法小結(jié)

    log4net日志開(kāi)源庫(kù)是用來(lái)控制日志文件大小,日志文件個(gè)數(shù),滾動(dòng)式覆蓋,自由控制日志打印等級(jí),今天通過(guò)本文給大家介紹C# log4net日志庫(kù)的用法小結(jié),感興趣的朋友一起看看吧
    2021-10-10
  • C#利用FluentFTP實(shí)現(xiàn)FTP上傳下載功能詳解

    C#利用FluentFTP實(shí)現(xiàn)FTP上傳下載功能詳解

    FTP作為日常工作學(xué)習(xí)中,非常重要的一個(gè)文件傳輸存儲(chǔ)空間,想必大家都非常的熟悉了,那么如何快速的實(shí)現(xiàn)文件的上傳下載功能呢,本文以一個(gè)簡(jiǎn)單的小例子,簡(jiǎn)述如何通過(guò)FluentFTP實(shí)現(xiàn)文件的上傳和下載功能
    2023-02-02
  • C#中使用JSON.NET實(shí)現(xiàn)JSON、XML相互轉(zhuǎn)換

    C#中使用JSON.NET實(shí)現(xiàn)JSON、XML相互轉(zhuǎn)換

    這篇文章主要介紹了C#中使用JSON.NET實(shí)現(xiàn)JSON、XML相互轉(zhuǎn)換的相關(guān)代碼及示例,需要的朋友可以參考下
    2015-11-11
  • 詳解C#多線程編程之進(jìn)程與線程

    詳解C#多線程編程之進(jìn)程與線程

    這篇文章主要介紹了詳解C#多線程編程之進(jìn)程與線程的的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • C#中的反射(System.Reflection)

    C#中的反射(System.Reflection)

    這篇文章介紹了C#中的反射(System.Reflection),文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • C# TabControl控件中TabPage選項(xiàng)卡切換時(shí)的觸發(fā)事件問(wèn)題

    C# TabControl控件中TabPage選項(xiàng)卡切換時(shí)的觸發(fā)事件問(wèn)題

    這篇文章主要介紹了C# TabControl控件中TabPage選項(xiàng)卡切換時(shí)的觸發(fā)事件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • C#實(shí)現(xiàn)讀取匿名對(duì)象屬性值的方法示例總結(jié)

    C#實(shí)現(xiàn)讀取匿名對(duì)象屬性值的方法示例總結(jié)

    這篇文章主要介紹了C#實(shí)現(xiàn)讀取匿名對(duì)象屬性值的方法,結(jié)合實(shí)例形式總結(jié)分析了C#通過(guò)反射、轉(zhuǎn)換等方法讀取匿名對(duì)象屬性值的相關(guān)操作技巧,需要的朋友可以參考下
    2020-03-03
  • C#的winform如何嵌套另一個(gè)exe程序

    C#的winform如何嵌套另一個(gè)exe程序

    這篇文章主要介紹了C#的winform如何嵌套另一個(gè)exe程序問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評(píng)論