国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

關于變量名與類名同名問題

2019-11-14 13:49:08
字體:
來源:轉載
供稿:網友

關于變量名與類名同名問題

在使用WinForm時會經常遇到類似 Button Button=new Button(); 這樣的類型名與變量名同名的問題,剛開始沒怎么關注這個問題,所以也沒怎么在乎,但現在在書上又看到了類似的代碼,頓時讓我感到很茫然--變量名之間是不能重復的,如

 

int temp=0;int temp=1;    //Compiler Error !

 

但為什么類型可以與變量同名呢?要解決這個問題還得回到定義。

  • 變量命名規則:變量名首字母必須為字母(a-z A-Z),下劃線(_),或者美元符號($)開始,php編程中所有變量必須以$開始。(有些編譯器已經支持中文變量名了)
  • 變量名只能是字母(a-z A-Z),數字(0-9),下劃線(_)的組合,并且之間不能包含空格,數字不能放在變量名首位。
  • 變量名不能使用編程語言的保留字。比如在javascript中不能使用true,false,while,case,break保留字等等。

也就是說變量名與類同名并不違反變量的命名規則!!!

那么問題又來了:在同名的前提下,程序運行時是如何分辨類與變量的呢?

先看一段代碼:

 

    // 屬性 X Y 為非靜態    public class Point    {        public int X { get; set; }          public int Y { get; set; }    }    class PRogram    {        static void Main(string[] args)        {            Point Point=new Point();            Point.X = 100;            Point.Y = 100;            Console.WriteLine(Point.X + "  " + Point.Y);            Console.ReadKey();        }    }

 

由于X 與 Y 為非靜態,所以無法通過類直接訪問,所以編譯器會把 Point 認為是 變量。

在看一段代碼:

    // 屬性 X Y 為靜態    public class Point    {        public static int X { get; set; }          public static int Y { get; set; }    }    class Program    {        static void Main(string[] args)        {            //Point Point=new Point();  注不注釋這段代碼對結果無影響            Point.X = 100;            Point.Y = 100;            Console.WriteLine(Point.X + "  " + Point.Y);            Console.ReadKey();        }    }

此時可以看出編譯器會優先考慮 Point 為類的情況,在這種情況完全成立時不會把 Point 看作變量。

 

所以變量名可以與類型同名(如上面的 Point Point=new Point()),但不能與關鍵字同名(如 string string=new string()) ,而在使用時編譯器會優先考慮 Point 為類的情況,在這種情況下不成立時在考慮 Point 為變量時的情況。

 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 庄河市| 盐城市| 清徐县| 新龙县| 江源县| 逊克县| 甘德县| 荔波县| 五常市| 林西县| 通榆县| 和平区| 周宁县| 东乌珠穆沁旗| 来安县| 浦县| 南溪县| 桓台县| 崇明县| 甘孜| 宜兰市| 驻马店市| 武汉市| 广汉市| 平度市| 宽城| 北宁市| 常熟市| 闸北区| 黄平县| 靖边县| 阿拉善右旗| 石屏县| 盐亭县| 柏乡县| 沂水县| 墨竹工卡县| 鹿邑县| 大足县| 东乡族自治县| 攀枝花市|