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

首頁 > 編程 > C# > 正文

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

2020-01-24 00:41:44
字體:
來源:轉載
供稿:網友

一、變量

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結合起來使用如

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

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩一区二区免费视频| 国产精品成熟老女人| 日韩精品在线观| 国产伦精品一区二区三区精品视频| yw.139尤物在线精品视频| 国产精品美乳一区二区免费| 亚洲一区二区久久久久久久| 国产精品视频在线观看| 热re91久久精品国99热蜜臀| 国产婷婷97碰碰久久人人蜜臀| 国产精品久久久久久久久久三级| 欧美一区二区三区免费视| 亚洲成人中文字幕| 18性欧美xxxⅹ性满足| 欧美极品美女视频网站在线观看免费| 欧美精品在线极品| 午夜精品在线观看| 亚洲色图激情小说| 国产成一区二区| 久久精品视频va| 日韩中文字幕欧美| 日韩在线免费高清视频| 一个色综合导航| 狠狠久久五月精品中文字幕| 国产一区二区av| 国产精品第一页在线| 日韩av一区在线观看| 久久综合久久88| 久久99精品视频一区97| 日韩国产在线播放| 日韩av免费观影| 91久久嫩草影院一区二区| 中文字幕成人在线| 亚洲成人1234| 午夜精品三级视频福利| 国产精品久久久久久av下载红粉| 国产精品91一区| 91精品国产高清久久久久久久久| 国产拍精品一二三| 久久精品久久久久久| 欧洲亚洲女同hd| 国内精品久久久久伊人av| 国产91在线播放精品91| 日韩精品视频三区| 国产精品99一区| 欧美激情在线一区| 久久久久九九九九| 色777狠狠综合秋免鲁丝| 美女精品视频一区| 国产精品久久久久秋霞鲁丝| 国产情人节一区| 欧美黄色三级网站| 亚洲精品美女久久| 国产欧美久久久久久| 亚洲加勒比久久88色综合| 国模叶桐国产精品一区| 中文字幕免费精品一区| 日韩成人在线观看| 亚洲天堂成人在线| 久久久精品在线| 国产亚洲激情在线| 国产精品美女在线观看| 中日韩美女免费视频网站在线观看| 中文字幕日韩欧美精品在线观看| 97国产suv精品一区二区62| 日韩av手机在线| 国产精品99久久99久久久二8| 午夜精品国产精品大乳美女| 欧美日韩免费一区| 国产精品久久久久91| 国产精品电影在线观看| 亚洲japanese制服美女| 成人黄在线观看| www.色综合| 在线观看欧美日韩| 亚洲精品黄网在线观看| 5252色成人免费视频| 亚洲国产一区二区三区在线观看| 国产欧美久久一区二区| 欧美日韩精品二区| 欧美日韩xxxxx| 久久精品国产成人精品| 亚洲综合大片69999| 欧美日韩视频在线| 中文字幕欧美日韩va免费视频| 96sao精品视频在线观看| 色吧影院999| 欧美风情在线观看| 欧美精品久久久久久久免费观看| 性欧美xxxx交| 一区二区中文字幕| 欧美日韩国产二区| 国产精品精品一区二区三区午夜版| 日本欧美国产在线| 136fldh精品导航福利| 精品国产乱码久久久久久虫虫漫画| 色妞久久福利网| 亚洲欧洲一区二区三区在线观看| 中文字幕日韩欧美精品在线观看| 色yeye香蕉凹凸一区二区av| 亚洲欧美激情另类校园| 亚洲最大的成人网| 欧美视频中文在线看| 国产精品视频一区二区高潮| 久久噜噜噜精品国产亚洲综合| 欧美一级大片在线免费观看| 亚洲精品一区二区三区婷婷月| 亚洲sss综合天堂久久| 91成人国产在线观看| 成人xxxxx| 久久久久女教师免费一区| 精品国产福利视频| 久久香蕉精品香蕉| 在线成人一区二区| www.日韩视频| 国产精品久久久久9999| 日韩在线激情视频| 亚洲乱码av中文一区二区| 91精品久久久久久综合乱菊| 欧美精品久久久久久久久久| 日韩免费黄色av| 亚洲欧美中文另类| 91亚洲精品在线观看| 亚洲国产精品久久久久久| 亚洲第一天堂无码专区| 亚洲在线一区二区| 国产精品户外野外| 亚洲的天堂在线中文字幕| 美日韩精品视频免费看| 6080yy精品一区二区三区| 成人国产精品久久久久久亚洲| 国产aaa精品| 成人观看高清在线观看免费| 亚洲精品美女在线观看播放| 中文字幕亚洲一区二区三区| 亚洲欧美激情精品一区二区| 最新的欧美黄色| 国产精品视频yy9099| 亚洲精品久久久久久久久久久| 亚洲精品一区二三区不卡| 热99精品里视频精品| 色综合91久久精品中文字幕| 川上优av一区二区线观看| 亚洲性xxxx| 夜色77av精品影院| 最近日韩中文字幕中文| 日韩女优在线播放| xxxxxxxxx欧美| 九九综合九九综合| 热久久免费视频精品| 国产精品久久久久久影视| 欧美黑人巨大xxx极品| 久久精品视频亚洲| 中文字幕欧美精品日韩中文字幕| 久久夜色精品国产亚洲aⅴ| 亚洲成色777777在线观看影院| 欧美激情中文字幕在线| 亚洲已满18点击进入在线看片| 久久视频在线观看免费| 精品五月天久久| 色偷偷888欧美精品久久久| 国产91免费看片| 爱福利视频一区| 亚洲欧美中文另类|