C#类基本知识
1.訪問修飾符:在C#中有4個訪問修飾符
public:可以在任何地方被訪問
internal:只能在本項目中被訪問,一個項目可以包含多個文件。
protected:只能在本類和子類中被訪問
private:只能在本類中被訪問。
再類這個級別,不寫訪問修飾符默認為internal
在類里面,方法外定義變量、方法前不佳訪問修飾符默認為private。
namespace 類基本知識1 {class Person //默認為internal {string name;//默認為privateint age;public void Test(){}} }2.類的成員:字段、屬性、方法
屬性:通俗的說,就是定義一個public的具有g(shù)et/set方法的變量,這個變量用于保護一個私有變量,即保護字段
舉例:
namespace 類基本知識1 {class Person {string name;public Person(string name){this.name = name;}public string Name //右鍵重構(gòu)--封裝字段。通過屬性來訪問私有的字段,好處很多 {get { return name; }//set { name = value; } }int age;public int Age{get { return age; }set{if (value > 0){age = value;}else{age = 0;}}}public void Test(){}} }屬性默認都有g(shù)et/set方法,當對屬性賦值時,會調(diào)用set方法,賦的值默認存在set的value里。當對屬性讀取是,調(diào)用get方法
通過屬性保證私有字段一定合法?
屬性通過有無get/set可分為:只讀、只寫、讀寫
允許外部訪問的變量(字段)一定要聲明為屬性。
注意:當屬性設置為只讀時,即能防止隨便改動值,但是怎么賦初值呢?
?? 借助構(gòu)造函數(shù)啦,跟C++ 的構(gòu)造函數(shù)相同,不做過多介紹。至于C# 的析構(gòu)函數(shù),可以不用寫,系統(tǒng)本身有垃圾回收機制,當系統(tǒng)資源緊缺時會幫我們回收垃圾
3.C#的類圖查看器。
3.形參前加params,編譯器會自動把參數(shù)轉(zhuǎn)換成數(shù)組形式,叫可變參數(shù),必須放在參數(shù)表最后一個.
典型例子就是public static void WriteLine(string format, params object[] arg);
static void Main(string[] args){int[] numbers = { 1, 2, 3, 4, 5 };int sum1=Sum(numbers);Console.WriteLine(sum1);//或者直接傳數(shù)也可以int sum2 = Sum(1, 2, 3);Console.WriteLine(sum2);}static int Sum(params int[] myArr){int iSum=0;for (int i=0;int<myArr.Length;i++){iSum+=myArr[i];}return iSum;}4.命名空間:項目名一般默認為命名空間名,命名空間不允許以數(shù)字開頭,一旦項目名為數(shù)字開頭,系統(tǒng)會自動給命名空間名前加_.
.net命名空間是邏輯上的包含關(guān)系,不是物理上的。(實質(zhì)上不是一個命名空間包含另一個命名空間,只是定義的時候?qū)懗蒼amespace System.Linq;
System是根命名空間
---不在同一個命名空間下的類,不能被直接訪問,要想訪問別的命名空間下的類有兩種方法
1)通過using引用對方的命名空間
2)寫全稱.命名空間.類名
5.C#中的string類型可以看作是字符數(shù)組,可以通過字符下邊來訪問每一位。而C++中字符串類型就是字符數(shù)組
??????????? string s = "hello,world";
??????????? Console.WriteLine(s[2]);//訪問的是l
?C#中的字符串有一個重要特性:不可變性,字符串一旦聲明就不可以再改變。只能通過索引來讀取指定位置的char,不能對指定位置的char進行修改。
可通過string的ToCharArray()方法來實現(xiàn)修改?????????
string s = "hello,world";char[] chars = s.ToCharArray();chars[1] = 'i';s = new string(chars);Console.WriteLine(s);s="hello1“ s="world1”;
注意:字符串的值具有不可改變性,復制時新開辟了空間,變量里存的是字符串首地址,賦值時只是把變量指向改變了,內(nèi)存中本來的值還在那塊空間里。
?
5.Ctrl+.快捷提示
總結(jié)
- 上一篇: MySQL数据库如何做好优化
- 下一篇: C# 输出目录结构树到Console或文