程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 如何使用C#關鍵字const,readonly,static,

如何使用C#關鍵字const,readonly,static,

編輯:C#入門知識

如何使用C#關鍵字const,readonly,static,


如果有一個值不太會變化,我們經常使用const和readonly,這2者有何不同呢?有時候,我們也會在readonly之前加上關鍵字static,這又意味著什麼呢?

 

  const

● const默認是靜態的,可以通過"類名.字段名"來訪問。
● const變量只能在聲明的時候賦值,不能在構造函數中為const類型變量賦值。
● 一旦程序集被編譯,const變量會被寫進程序集的IL代碼中。如果想修改const變量值,必須在修改值後再重新生成程序集。
● const是編譯期變量

    public class Test
    {
        public const int defaultValue = 10;
        //這裡報錯:因為不能在構造函數內為const變量賦值
        public Test()
        {
            defaultValue = 1000;
        }
    }

以上,
可以通過Test.defaultValue來獲取變量defaultValue的值。
在Test構造中為defaultValue賦值會報錯,只能在聲明defaultValue的時候賦初值。

 

  readonly

● readonly默認是實例變量,只能通過"對象實例.字段名"來訪問。
● readonly變量可以在聲明的時候或在構造函數內賦值。
● 如果想改變readonly變量值,只需要在聲明變量或構造函數內修改,不需要重新生成程序集。
● readonly是運行時變量

    class Program
    {
        static void Main(string[] args)
        {
            Test test = new Test();
            Console.WriteLine(test.rdValue);
            Console.ReadKey();
        }
    }
    public class Test
    {
        public readonly int rdValue;
        public Test()
        {
            this.rdValue = 100;
        }
        //這裡報錯:因為只能在聲明變量或構造函數內對readonly變量賦值
        public int RDVaue
        {
            get { return rdValue; }
            set { rdValue = value; }
        }
    }


以上,
通過Test類的實例來獲取readonly變量值,test.rdValue。
在RDValue屬性中為readonly變量rdValue賦值會報錯。

 

如果在readonly之前加上static關鍵字:
● 此時的readonly變量只能在聲明變量的時候賦值
● 此時的readonly變量可以通過"類名.字段名"來訪問
● 此時的readonly變量變成了編譯期變量

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(Test.rdValue);
            Console.ReadKey();
        }
    }
    public class Test
    {
        public static readonly int rdValue=100;
    }

 

以上,
只能在聲明static readonly變量rdValue的時候賦值。 
通過Test.rdValue來訪問static readonly變量。

 

總結:const是靜態的、編譯期變量,只能在聲明變量的時候賦值;readonly是運行時變量,可以在聲明的時候或在構造函數內賦值。當在readonly前加上關鍵字static,變成static readonly後,此時的static readonly變量就變成了靜態的、編譯期變量。


怎用C做??

switch配合if編寫:

#include<stdio.h>

void main()
{
int i,j;
printf("請輸入您的考試成績:");
scanf("%d",&i);
if(i>=0&&i<=59)
j=1;
if(i>=60&&i<69)
j=2;
if(i>=70&&i<=79)
j=3;
if(i>=80&&i<=89)
j=4;
if(i>=90&&i<=99)
j=5;
switch(j)
{
case 1:
{
printf("您的考試成績為:E\n");
break;
}
case 2:
{
printf("您的考試成績為:D\n");
break;
}
case 3:
{
printf("您的考試成績為:C\n");
break;
}
case 4:
{
printf("您的考試成績為:B\n");
break;
}
case 5:
{
printf("您的考試成績為:A\n");
break;
}
default:
printf("您輸入的成績不在考試成績范圍內!\n");

}
}

if多分支結構語句單獨編寫:
#include<stdio.h>

void main()

{
int i;
printf("請輸入考試成績:");
scanf("%d",&i);
if(i<=0||i>=100)
printf("超出成績輸入范圍!\n");
if(i<=99&&i>=90)
{
printf("考生成績為:");
printf("A\n");
}

if(i<=89&&i>=80)
{
printf("考生成績為:");
printf("B\n");
}
if(i<=79&&i>=70)
{
printf("考生成績為:");
printf("C\n");
}
if(i<=69&&i>=60)
{
printf("考生成績為:");
printf("D\n");
}
if(i<=59&&i>=0)
{
printf("考生成績為:");
printf("E\n");
}
}

switch語句單獨編寫:

#include<stdio.h>

void main()
{
int i,j;
printf("請輸入您的考試成績:");
scanf("%d",&i);
j=i/10;
switch(j)
{
case 9:
{
printf("您的考試成績為: A\n"......余下全文>>
 

C語言中 ^怎使用

a1 = 0x01; //0000 0001
a2 = 0x00; //0000 0000
a3 = 0x03; //0000 0011
a4 = 0x02; //0000 0010

b1 = a1 ^ a2; //0000 0001
b2 = a1 ^ a3; //0000 0010
b3 = a1 ^ a4; //0000 0011

^異或運算符,位值相同為0,不同為1,見上示例.

//
簡單實際問題舉例:
======\=======\=======
======a=======b=======
上面是2條電路,2個開關分別為a和b,打開狀態:\[1],關閉狀態:/[0].
若同時打開或者關閉,兩條電路均不通.
若a打開[1],b關閉[0],電路1通電
======\=======/=======
若a關閉[0],b打開[1],電路2通電
======/=======\=======
綜上,電路在a,b狀態相同時不通[0],在a,b不同時通電[1].
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved