C#學(xué)習(xí)遇到的問題

1.C#的幾種注釋方法

// 單行注釋

/**/ 塊注釋

///說明注釋幻工,注釋以后可以自動生成說明文檔檔

#region  折疊注釋哮独,可以將代碼折疊 
#endregion
只是#region 所在行后面的文字是注釋文字,而其它的#region和#endregion之內(nèi)的行代碼是有效的速梗,僅僅起折疊作用

2.vs(visual studio 2019)如何恢復(fù)默認(rèn)設(shè)置

流程如下:工具 -> 導(dǎo)入和導(dǎo)出設(shè)置 -> 重置所有設(shè)置

img
img

然后就可以重置vs2019 的布局了籍茧!

3.C#中using關(guān)鍵字的作用及用法

using的用途和使用技巧:
  1. 引用命名空間
> 引用命名空間版述,這樣可以在程序中引用命名空間的類型而不必指定詳細(xì)的命名空間.
> 
>  a) 比如在程序中常用的using System.Text;
> 
>  b) 引用命名空間,并不等于編譯器編譯時加載該命名空間所在的程序集寞冯,程序集的加載決定于程序中對該程序集是否存在調(diào)用操作渴析,如果代碼中不存在任何調(diào)用操作則編譯器將不會加載using引入命名空間所在空間的程序集.因此,在源文件開頭吮龄,引入多個命名空間俭茧,并非加載多個程序集,不會造成’過度引用’的弊端
  1. 為命名空間或類型創(chuàng)建別名
> 為命名空間或類型創(chuàng)建別名
> 
>       創(chuàng)建別名的原因在于同一個文件中引入不同的命名空間中包括了相同名稱的類型漓帚。為了避免出現(xiàn)名稱沖突母债,可以通過設(shè)定別名來解決.
> 
>         例:using SGPoint = ShapMap.Geometries.Point
> 
>         Using SGPoint = System.Drawing.Point
> 
>       其實也可以通過類型全名稱來加以區(qū)分,但是最佳解決方案還是使用using
  1. 使用using語句
> using語句允許程序員指定使用資源的對象應(yīng)當(dāng)何時釋放資源.using語句中使用的對象必須實現(xiàn)IDisposable接口.此接口提供了Dispose方法尝抖,該方法將釋放此對象的資源
> 
> 使用規(guī)則:
> 
>       a) using語句只能用于實現(xiàn)了IDisposable接口的類型毡们,禁止為不支持IDisposable接口類型使用using語句,否則會出現(xiàn)編譯錯誤
> 
>       b) using語句適用于清理單個非托管資源的情況昧辽,而多個非托管對象的清理最好以try-finaly來實現(xiàn)衙熔,因為嵌套using語句可能存在隱藏的Bug.內(nèi)層using塊引發(fā)異常時,將不能釋放外層using塊的對象資源
> 
> using實質(zhì):
> 
> 在程序編譯階段搅荞,編譯器會自動將using語句生成try-finally語句青责,并在finally塊中調(diào)用對象的Dispose方法,來清理資源.所以取具,using語句等效于try-finally語句

4.C#關(guān)鍵字之overload、override扁耐、new詳解暇检。

重載、重寫婉称、覆寫块仆,分別指的是overload构蹬、override、new悔据。

一庄敛、override重寫:

是在子類中重寫父類中的方法,兩個函數(shù)的函數(shù)特征(函數(shù)名科汗、參數(shù)類型與個數(shù))相同藻烤。用于擴(kuò)展或修改繼承的方法、屬性头滔、索引器或事件的抽象或虛擬實現(xiàn)怖亭。提供從基類繼承的成員的新實現(xiàn),而通過override聲明重寫的方法稱為基方法坤检。

注意事項:

1.重寫基方法必須具有與override方法相同的簽名兴猩。 2.override聲明不能更改virtual方法的可訪問性,且override方法與virtual方法必須具有相同級別訪問修飾符早歇。 3.不能用new倾芝、static、virtual修飾符修改override方法箭跳。 4.重寫屬性聲明必須指定與繼承的屬性完全相同的訪問修飾符晨另、類型和名稱。 5.重寫的屬性必須是virtual衅码、abstract或override拯刁。 6.不能重寫非虛方法或靜態(tài)方法。 7.父類中有abstract逝段,那么子類同名方法必定有override垛玻,若父類中有 virtual方法,子類同名方法不一定是override奶躯,可能是overload帚桩。 8.override必定有父子類關(guān)系。

二嘹黔、overload重載:

在同一個類中方法名相同账嚎、參數(shù)或返回值不同的多個方法即為方法重載。

注意事項:

1.出現(xiàn)在同一個類中儡蔓。 2.參數(shù)列表不同或返回類型和參數(shù)列表都不同郭蕉,只有返回類型不同不能重載。(參數(shù)列表包括參數(shù)個數(shù)和參數(shù)類型)

三喂江、overwrite覆寫:

用new實現(xiàn)召锈。在子類中用 new 關(guān)鍵字修飾定義的與父類中同名的方法,也稱為覆蓋获询,覆蓋不會改變父類方法的功能涨岁。

四拐袜、 C#關(guān)鍵字之重寫,重載梢薪,覆蓋的實例:
//代碼實例演示
class Parent
{
    public void F()
    {
        Console.WriteLine("Parent.F()");
    }
    public virtual void G() //抽象方法
    {
        Console.WriteLine("Parent.G()");
    }
    public int Add(int x, int y)
    {
        return x + y;
    }
    public float Add(float x, float y) //重載(overload)Add函數(shù)
    {
        return x + y;
    }
}
class ChildOne:Parent //子類一繼承父類
{
    new public void F() //覆寫(overwrite)父類函數(shù)
    {
        Console.WriteLine("ChildOne.F()"); 
    }
    public override void G() //重寫(override)父類虛函數(shù),主要實現(xiàn)多態(tài)
    {
        Console.WriteLine("ChildOne.G()");
    }
}
class ChildTwo:Parent //子類二繼承父類
{
    new public void F()
    {
        Console.WriteLine("ChildTwo.F()");
    }
    public override void G()
    {
        Console.WriteLine("ChildTwo.G()");
    }
}
class Program
{
    static void Main(string[] args)
    {
        Parent childOne = new ChildOne();
        Parent childTwo = new ChildTwo();
        //調(diào)用Parent.F()
        childOne.F();
        childTwo.F();
        //實現(xiàn)多態(tài)
        childOne.G();
        childTwo.G();
        Parent load = new Parent();
        //重載(overload)
        Console.WriteLine(load.Add(1, 2));
        Console.WriteLine(load.Add(3.4f, 4.5f));
        Console.Read();
    }
}

5.c#之vs2019的重新生成解決方案”和"生成解決方案"的學(xué)習(xí)

解決方案是什么:

解決方案是來若干個有聯(lián)系的項目的組合蹬铺。你生成解決方案,就會把所有自的項目都百給bulid了秉撇,省的你一個一個去生成甜攀。

比如解決方案里有3個項目,a,b,c,a項目用到度b項目畜疾,b項目用到c項目赴邻,它會按順序問給你生成c->b-a,然后把c,b的答dll都放到a的bin目錄下啡捶。

重新生成解決方案:

重新生成解決方案顧名思義就是重新編譯每個文件姥敛,這樣速度要滿些,但可靠度高一些瞎暑⊥玻“重新生成”是對所有的文件都重新生成你在解決方案上右鍵,選擇重新生成解決方案的話了赌。VS會自動幫你都生成一遍的墨榄。也就是Bin目錄里的東西。

生成解決方案:

而生成解決方案則在上次編譯的基礎(chǔ)上編譯那些修改過了的文件勿她,而沒有修改的文件不編譯袄秩,類似于數(shù)據(jù)庫里的增量備份》瓴ⅲ“生成”的時候之剧,只對你改動過的文件重新生成,沒有改動過的文件不會重新生成砍聊;

清理解決方案:

最后提一下“清理解決方案”背稼,這是在“重新生成解決方案”和“生成解決方案”下面的一個選項,選擇“清理解決方案”將刪除所有中間文件和輸出文件玻蝌,只留下項目文件和組件文件蟹肘,以后可以從這些文件生成中間文件和輸出文件的新實例。其實“清理解決方案”這個過程是在“重新生成解決方案”之前要執(zhí)行的一個步驟俯树,至此帘腹,這三者分別的作用的概念就了解完成了。

總結(jié):

這個MSDN上有介紹许饿,簡單地說: 生成解決方案:已經(jīng)是最新的就跳過阳欲。 重新生成解決方案:先把已經(jīng)生成好的全部刪掉,然后再生成一遍。


6.VS2019下C#解決方案生成的文件都是什么作用胸完?(bin文件、obj文件翘贮、properties文件赊窥、.cs文件、 .csproj文件狸页、.config文件等)

文件/文件夾 作用 介紹
Bin目錄 用來存放編譯的結(jié)果 bin是二進(jìn)制binrary的英文縮寫锨能,因為最初C編譯的程序文件都是二進(jìn)制文件,它有Debug和Release兩個版本芍耘,分別對應(yīng)的文件夾為bin/Debug和bin/Release址遇,這個文件夾是默認(rèn)的輸出路徑,我們可以通過:項目屬性—>配置屬性—>輸出路徑來修改斋竞。
obj 用于存放編譯過程中生成的中間臨時文件 obj是object的縮寫倔约,其中都有debug和release兩個子目錄,分別對應(yīng)調(diào)試版本和發(fā)行版本坝初,在.NET中浸剩,編譯是分模塊進(jìn)行的,編譯整個完成后會合并為一個.DLL或.EXE保存到bin目錄下鳄袍。因為每次編譯時默認(rèn)都是采用增量編譯绢要,即只重新編譯改變了的模塊,obj保存每個模塊的編譯結(jié)果拗小,用來加快編譯速度重罪。是否采用增量編譯,可以通過:項目屬性—>配置屬性—>高級—>增量編譯來設(shè)置.
Properties文件夾 定義程序集的屬性 項目屬性文件夾 一般只有一個 AssemblyInfo.cs 類文件哀九,用于保存程序集的信息剿配,如名稱,版本等勾栗,這些信息一般與項目屬性面板中的數(shù)據(jù)對應(yīng)惨篱,不需要手動編寫。
.config文件 Web.config文件向它們所在的目錄和所有子目錄提供配置信息
.cs文件 類模塊代碼文件 源代碼都寫在這里围俘,主要就看這里的代碼砸讳。
.csproj文件 C#項目文件 創(chuàng)建應(yīng)用程序所需的引用、數(shù)據(jù)連接界牡、文件夾和文件的信息簿寂。用VS打開這個文件就可以直接打開這個項目,自動生成宿亡,不需要看常遂。
.sln 在開發(fā)環(huán)境中使用的解決方案文件 它將一個或多個項目的所有元素組織到單個的解決方案中。此文件存儲在父項目目錄中.解決方案文件挽荠,他是一個或多個.proj(項目)的集合
.aspx .aspx 是網(wǎng)頁文件克胳,HTML代碼寫在這里面 Web窗體頁由兩部分組成:視覺元素(HTML平绩、服務(wù)器控件和靜態(tài)文本)和該頁的編程邏輯。VS將這兩個組成部分分別存儲在一個單獨的文件中漠另,視覺元素在.aspx文件中創(chuàng)建捏雌。
.aspx.cs Web窗體頁的編程邏輯位于一個單獨的類文件中 該文件稱作代碼隱藏類文件(.aspx.cs)
.aspx.resx/.restx 資源文件 資源是在邏輯上有應(yīng)用程序部署的任何非可執(zhí)行數(shù)據(jù),通過在資源文件中存儲數(shù)據(jù)笆搓,無需重新編譯整個應(yīng)用程序即可更改數(shù)據(jù)性湿。
.pdb PDB (程序數(shù)據(jù)庫) 文件保持著調(diào)試和項目狀態(tài)信息,從而可以對程序的調(diào)試配置進(jìn)行增量鏈接满败。
.suo 解決方案用戶選項 記錄所有將與解決方案建立關(guān)聯(lián)的選項肤频,以便在每次打開時,它都包含您所做的自定義設(shè)置算墨。

后記:

文章持續(xù)更新宵荒,如果喜歡,請拿起你們可愛的小手米同,給我點個贊吧骇扇!

點贊是一種積極的生活態(tài)度,贊一個吧面粮!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末少孝,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子熬苍,更是在濱河造成了極大的恐慌稍走,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柴底,死亡現(xiàn)場離奇詭異婿脸,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)柄驻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門狐树,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鸿脓,你說我怎么就攤上這事抑钟。” “怎么了野哭?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵在塔,是天一觀的道長。 經(jīng)常有香客問我拨黔,道長蛔溃,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮贺待,結(jié)果婚禮上徽曲,老公的妹妹穿的比我還像新娘。我一直安慰自己麸塞,他們只是感情好疟位,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般惑申。 火紅的嫁衣襯著肌膚如雪罐旗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天拣展,我揣著相機(jī)與錄音,去河邊找鬼。 笑死章贞,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的非洲。 我是一名探鬼主播鸭限,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼两踏!你這毒婦竟也來了败京?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤梦染,失蹤者是張志新(化名)和其女友劉穎赡麦,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體帕识,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡泛粹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了肮疗。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晶姊。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖伪货,靈堂內(nèi)的尸體忽然破棺而出们衙,到底是詐尸還是另有隱情,我是刑警寧澤超歌,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布砍艾,位于F島的核電站,受9級特大地震影響巍举,放射性物質(zhì)發(fā)生泄漏脆荷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蜓谋。 院中可真熱鬧梦皮,春花似錦、人聲如沸桃焕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽观堂。三九已至让网,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間师痕,已是汗流浹背溃睹。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留胰坟,地道東北人因篇。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像笔横,于是被迫代替她去往敵國和親竞滓。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344