亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#中變量、常量、枚舉、預處理器指令知多少

2019-10-29 21:11:37
字體:
來源:轉載
供稿:網友

一、變量

C#共有其中變量類型有:靜態變量、實類變量、數組元素、數值參數、引用參數、輸出參數和局部變量

先定義一個簡單的類來說明,如下:

public class VariableDefine  {    private static uint variableUInt;    public static uint VariableUInt { get => variableUInt; set => variableUInt = value; }    string VariableStr;    public VariableDefine(string version)    {      VariableStr = version;    }    public static void Fun()    {        Console.WriteLine(variableUInt);    }    /// <summary>    /// 變量類型    /// </summary>    /// <param name="intArray">intArray[0]數組元素</param>    /// <param name="a">數值參數</param>    /// <param name="b">引用類型</param>    /// <param name="c">輸出參數</param>    public void Fun(int[] intArray, int a, ref int b, out int c)    {      //局部變量i      var i = 0;      c = i;    }  }

對于靜態變量在被創建加載之后失效,當被卸載后失效,靜態變量的初始值也為此類型的變量的默認值

對于實例變量當創建某類的一個實例的時候,隸屬于該類的實例變量也被生成,當不再有關于這個實例的引用而且實例的析構函數執行了以后,此實例變量失效

對于數組元素當任意一個數組實例被創建時,這個數組的元素也被同時創建,當不再有任何正對這個數組實例的引用時,它的元素也就此失效

當一個不帶有ref 或out 修飾參數被聲明時,我們稱它為數值參數

參數當一個帶有ref 修飾語的參數被聲明時,我們稱之為引用參數

參數當一個帶有out 修飾語的參數被聲明時,我們稱之為輸出參數

局部變量被局部變量聲明語句創建

C#編譯器不容許在表達式中使用未初始化的變量

變量初始化要注意兩點的是:(1)變量是類或結構中的字段,如果沒有顯示初始化,創建這些變量時,其默認值就是0(2)方法的局部變量必須在代碼中顯示初始化,之后才能在語句中使用它們的值。

二、常量

C#可以定義兩種類型的常量,靜態常量用const來定義在程序編譯的時候確定,一種是動態常量用readonly來定義在運行時確定

靜態常量使用方便,性能高,但一旦定義之后就不可以改變,在一個引用第三方程序集上面如果定義了一個靜態常量,當它定義的值改變時你不得不重新引用生成主程序

動態常量使用靈活,能很好的支持程序的擴展性

下面一個事例就是通過讀取XML文檔來給動態常量賦值

public sealed class ReadOnlyModel  {    public readonly List<Company> ListCompany;    public ReadOnlyModel(string companyInfoPath)    {      XElement companys = XElement.Load(companyInfoPath);      var elements = from e in companys.Elements("company")              where e.Element("name").Value.Equals("C#")              select e;      ListCompany = GetListCompany(elements);    }    /// <summary>    /// 解析xml文檔    /// </summary>    /// <param name="elements"></param>    /// <returns></returns>    private List<Company> GetListCompany(IEnumerable<XElement>elements)    {      var listCompany = new List<Company>();      foreach (var element in elements)      {        var companyModel = new Company()        {          CompanyName = element.Element("name").Value,          CompanyEmail = element.Element("email").Value        };        listCompany.Add(companyModel);      }      return listCompany;    }  }

根據傳入的路徑來解析XML文件賦值給動態常量,能很好的擴展應用程序的常量值

三、枚舉

枚舉是用戶定義的整數類型,在聲明一個枚舉時,要指定該枚舉的實例可以包含的一組可以接受的值,枚舉具有如下的優勢:

1.枚舉可以使代碼更易于維護,有助于確定給變量指定合法的,期望的值

2.枚舉使代碼更清晰,允許用描述性的名稱來表示整數,而不是含義模糊、變化多端的數

3.枚舉也是代碼更易于輸入

在實際應用中通常在枚舉上面加上Description需要顯示的枚舉特性值,在頁面顯示的時候通常顯示的也是枚舉的特性值,所以有必要寫一個獲取枚舉特性值的通用方法

class Program  {    static void Main(string[] args)    {      //ReadOnlyModel readOnlyCompany = new ReadOnlyModel(@"D:/GitHubProject/C#AdvancedProgramming/VariableDefine/VariableDefine/bin/Debug/Test-Parking-SN.xml"); //C:/Program Files(x86)/FPOnline      //foreach (var company in readOnlyCompany.ListCompany)      //{      //  Console.WriteLine("company name is {0} company email is {1}", company.CompanyName, company.CompanyEmail);      //}      //Console.WriteLine("company name is {0} company email is {1}", ConstClass.CompanyName, ConstClass.CompanyEmail);      MemberLevel superMember = MemberLevel.SuperMember;      Console.WriteLine(superMember.GetDescriptionEnum());      Console.ReadKey();    }  }  public enum MemberLevel  {    [Description("超級會員")]    SuperMember=1,    [Description("一般會員")]    Member=2,    [Description("普通用戶")]    GeneralUser=3  }  public static class EnumExtension  {    public static string GetDescriptionEnum(this Enum enumValue)    {      DescriptionAttribute attr = null;      var enumType = enumValue.GetType();      string name = Enum.GetName(enumType, enumValue);      if (name != null)      {        FieldInfo fieldInfo = enumType.GetField(name);        if (fieldInfo != null)          attr = Attribute.GetCustomAttribute(fieldInfo, typeof(DescriptionAttribute), false) as DescriptionAttribute;      }      if (attr != null && !string.IsNullOrEmpty(attr.Description))        return attr.Description;      else return string.Empty;    }  }

參考博客:枚舉知多少

四、C#的預處理指令

使用預處理指令可以禁止編譯器編譯與額外功能相關的代碼,以控制不同版本擁有的功能,如企業版和基本版本

#define(給定名稱的符號)和#undef(刪除名稱的符號)一般與#if、#elif、#else、#endif結合起來使用如

變量,常量,枚舉,C#

沒有找到預定義的Debug就不會執行 #if和#endif代碼塊里面的語句,這也稱為條件編譯。

同樣的預處理器指令有:#warning和#error,當編譯器遇到它們時,會分別產生警告或錯誤,如果編譯器遇到#warning指令,會給用戶顯示#warning后面的文本,之后編譯繼續,如果編譯器遇到#error指令,就會給用戶顯示后面的文本,作為一條編譯錯誤消息,然后立即退出編譯。

#region和#endregion指令用于把一段代碼標記為有給定名稱的一個塊,#line指令用于改變編譯器在警告和錯誤信息中顯示的文件名和行號信息,#pragm可以印制或還原指定的編譯警告參考:https://msdn.microsoft.com/zh-cn/library/yt3yck0x.aspx

 

注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美一区二区视频97| 亚洲国产精品热久久| 91精品国产777在线观看| 欧美激情第1页| 亚洲日本欧美中文幕| 日韩激情片免费| 亚洲激情 国产| 日本精品视频在线播放| 91精品国产91久久久久久最新| 国产97在线播放| 亚洲国产精品成人va在线观看| 欧美日韩亚洲一区二区三区| 国产极品精品在线观看| 亚洲欧美国产日韩天堂区| 欧美激情久久久久久| 欧美性视频在线| 久久久久久亚洲精品中文字幕| 亚洲国产精品成人一区二区| 久久久综合av| 日韩精品黄色网| 国产精品美女在线观看| 热久久美女精品天天吊色| 欧美xxxx做受欧美| 91美女福利视频高清| 91精品久久久久久久久不口人| 毛片精品免费在线观看| 国产视频精品xxxx| 日韩精品一区二区视频| 久久亚洲国产精品| 日本中文字幕久久看| 久久久精品国产| 欧美成人午夜免费视在线看片| 欧美午夜片欧美片在线观看| 91国产在线精品| 国产日韩中文字幕| 精品二区三区线观看| 精品久久久久久久久久国产| 欧美三级欧美成人高清www| 久久男人av资源网站| 91在线高清视频| 海角国产乱辈乱精品视频| 日韩av在线天堂网| 全色精品综合影院| 波霸ol色综合久久| 爽爽爽爽爽爽爽成人免费观看| 欧美大片免费观看在线观看网站推荐| 日韩精品在线观看网站| 成人黄色生活片| 欧美日韩中文字幕综合视频| 日韩av有码在线| 久久久亚洲国产天美传媒修理工| 国产精品一区二区久久久| 久久国产精品久久久久久久久久| 日韩中文视频免费在线观看| 日韩在线视频免费观看高清中文| 狠狠躁天天躁日日躁欧美| 精品久久久久久久久国产字幕| 久久99热精品| 黄网动漫久久久| 久久久999成人| 亚洲国产精品悠悠久久琪琪| 丁香五六月婷婷久久激情| 国产精品国产三级国产专播精品人| 亚洲free性xxxx护士hd| 国产精品27p| 亚洲男人7777| 福利一区视频在线观看| 精品女同一区二区三区在线播放| 另类图片亚洲另类| 日韩中文字幕国产| 欧美综合国产精品久久丁香| 国产精品福利在线观看网址| 国产精品三级网站| 久久久久久亚洲精品不卡| 少妇激情综合网| 国内精品中文字幕| 2019中文字幕在线免费观看| 亚洲欧美在线一区| 影音先锋日韩有码| 亚洲激情小视频| 亚洲精品aⅴ中文字幕乱码| 国产精品视频白浆免费视频| 国内精品视频在线| 欧美第一黄网免费网站| 国产精品久久久久国产a级| 亚洲国产小视频| 国产精品99蜜臀久久不卡二区| 亚洲色图狂野欧美| 国模gogo一区二区大胆私拍| 国产成人精品av在线| 热久久视久久精品18亚洲精品| 亚洲人成电影网站色| 欧美午夜视频在线观看| 国产精品一区二区三区久久| 日韩中文字幕在线免费观看| 久久久av电影| 91免费福利视频| 热久久这里只有精品| 国产精品视频99| 日韩毛片在线看| 在线观看精品自拍私拍| 亚洲国产欧美一区二区三区久久| 欧美日韩在线视频观看| 日韩a**中文字幕| 欧美精品手机在线| 亚洲精品有码在线| 97精品一区二区三区| 高清日韩电视剧大全免费播放在线观看| 国产精品免费在线免费| 久久久久久伊人| 国产精品第2页| 亚洲欧美日韩爽爽影院| 欧美极品少妇xxxxx| 91在线国产电影| 中文字幕在线视频日韩| 韩国19禁主播vip福利视频| 精品久久久久久中文字幕大豆网| 国产精品亚洲网站| 狠狠色噜噜狠狠狠狠97| 91网站在线免费观看| 日韩中文字幕免费看| 久久人人97超碰精品888| 成人综合国产精品| 国产欧美一区二区三区四区| 欧美成人午夜激情| 久久久久久国产精品| 欧美在线精品免播放器视频| 欧美成人免费网| 日韩专区中文字幕| 久久视频在线观看免费| 久久久久久久久中文字幕| 国产精品精品一区二区三区午夜版| 中文字幕一区二区三区电影| 国产精品美女久久久久久免费| 人九九综合九九宗合| 日韩午夜在线视频| 亚洲精品黄网在线观看| 欧美日韩国产色视频| 一区二区三区国产视频| 国产一区二区三区在线播放免费观看| 伊人久久大香线蕉av一区二区| 成年无码av片在线| 色综合导航网站| 91精品国产高清| 日韩美女主播视频| 最近2019中文字幕mv免费看| 欧美激情视频在线| 日本高清不卡的在线| 91精品啪aⅴ在线观看国产| 97在线视频免费播放| 亚洲jizzjizz日本少妇| 欧美在线中文字幕| 亚洲国产精品专区久久| 中文字幕亚洲欧美日韩高清| 疯狂做受xxxx高潮欧美日本| 国产精品入口免费视频一| 日韩成人久久久| 欧美成在线视频| 亚洲aa中文字幕| 日韩欧美黄色动漫| 国产在线精品成人一区二区三区| 欧美大尺度激情区在线播放| 欧美激情极品视频| 欧美孕妇孕交黑巨大网站|