h5可以用什么網(wǎng)站做app推廣渠道商
最近在學(xué)習(xí)C#開發(fā)知識,跟著傳智播客的視頻學(xué)習(xí)了一下,感覺還不錯,整理一下學(xué)習(xí)筆記。
C#基礎(chǔ)語法學(xué)習(xí)筆記
- 1.背景知識
- 2.Visual Studio使用
- 3.基礎(chǔ)知識
- 4.變量
- 5.運(yùn)算符與表達(dá)式
- 6.程序調(diào)試
- 7.判斷結(jié)構(gòu)
- 8.循環(huán)結(jié)構(gòu)
- 9.常量、枚舉類型
- 10.結(jié)構(gòu)體類型
- 11.數(shù)組
- 12.方法
- 13.outref用法
- 14.常用方法
1.背景知識
/*
背景知識:
(背景:.net是微軟的)
一、.net與C#
1. .net:又叫dotnet,指.Net Framework框架.是一種技術(shù),一種平臺
2. C#: C sharp(鋒利的), 是一種編程語言(控制計算機(jī),和計算機(jī)進(jìn)行交互的語言),可以基于.net 平臺進(jìn)行開發(fā)應(yīng)用關(guān)系: .net是一種平臺,在.net平臺上可以用C#語言進(jìn)行.net相關(guān)程序的開發(fā)
3.Java: Java即是一種技術(shù),又是一種語言二、.net能干什么?
1.Winform: 在.net這個平臺上開發(fā)的桌面應(yīng)用程序叫做 Winform應(yīng)用程序開發(fā) (桌面應(yīng)用程序:通過安裝到桌面)
2.ASP.NET: 在.net這個平臺上開發(fā)的web(瀏覽器)應(yīng)用程序(網(wǎng)站) 叫做ASP.NET (web應(yīng)用程序:通過打開瀏覽器輸入網(wǎng)址訪問)
3.wp7 :windows phone ,這.net這個平臺上進(jìn)行的手機(jī)嵌入式開發(fā) (嵌入式開發(fā)應(yīng)用程序:工業(yè)化控制設(shè)備)兩種服務(wù)模式:
1.C/S :客戶機(jī)(Client)/服務(wù)器(Server) :桌面應(yīng)用程序 (單機(jī)的不需要服務(wù)器的不算,因?yàn)橹挥蠧,沒有S,像QQ這種是C,還需要S)
2.B/S :瀏覽器(Browser)/服務(wù)器(Server):一般是web應(yīng)用程序 三、開發(fā)工具:Visual Studio
是微軟的一個IDE(Integrated Development集成開發(fā)環(huán)境),也可以在記事本中寫,但是太麻煩了 ,工欲善其事必先利其器。MSDN:開發(fā)工具的幫助文檔*/
2.Visual Studio使用
/* Visual Studio使用* * 一.創(chuàng)建項目* 文件->新建->項目->選擇要創(chuàng)建項目的類型(目前一般是.net的控制臺應(yīng)用)* * 項目名稱* 項目位置* 解決方案:解決方案包含項目,解決方案中可以包含多個項目(意思是這些個項目是用于解決這個方案的)* *二、界面排版** 1.菜單欄* 所有功能都會在菜單欄* 2.工具欄* 常用的工具功能,便捷* * 3.解決方案資源管理器* * 解決方案中可以包含多個項目,項目可以包含多個文件,文件中是我們寫的程序* 在文件中,可以有命名空間(定義命名空間前需要引用命名空間),命名空間中可以包含類,類中可以包含方法* (在C#中類文件是以.cs結(jié)尾的)* * 程序的執(zhí)行過程:* Main方法是我們程序的入口方法,當(dāng)我們執(zhí)行一個程序時,會首先找到Main方法,從Main的第一句開始執(zhí)行,* 當(dāng)Main方法執(zhí)行完成后(即執(zhí)行到Main方法的反大括號),程序就結(jié)束了* 一般情況下,一個項目只有一個Main方法,或者也可以沒有* * 4.重置開發(fā)環(huán)境* 可以使我們的開發(fā)工具恢復(fù)至默認(rèn)狀態(tài)* 菜單工具->導(dǎo)入導(dǎo)出設(shè)置->重置所有設(shè)置->不保存當(dāng)前所有設(shè)置->C#開發(fā)設(shè)置->完成 * * 一般的窗口不小心關(guān)閉了,在視圖中找* * 三、保存/打開項目* .sln :解決方案文件,記錄著解決方案中都有哪些項目* .csproj:項目文件,記錄著項目中都有哪些文件* 項目在哪忘了,右擊解決方案->在文件資源管理器中打開文件夾* * 1.打開項目:* 先找到項目路徑,不要打開.cs文件,直接雙擊打開.cs文件,只是打開了一個類,只能看不能運(yùn)行,右邊也沒有解決方案* 建議用vs打開.sln解決方案文件(可以打開該解決方案下的所有項目),也可以打開.csproj文件(只能打開這一個項目)* * 2.保存項目* Ctrl+s:只保存當(dāng)前界面下的文件* Ctrl+shift+s:保存所有文件* * 四、設(shè)置vs的字體大小及行號顯示* * 1.設(shè)置vs字體大小:工具->選項->環(huán)境->字體和顏色* 2.行號顯示:工具->選項->文本編輯器->所有語言->行號* * 五、在同一解決方案下創(chuàng)建多個項目* 直接從頭打開vs創(chuàng)建項目話會再弄一個新的解決方案* 如果想在同一解決方案下創(chuàng)建多個項目,需要先打開解決方案,然后新建就會出現(xiàn)選項 或者打開解決方案后右擊添加* * 六、啟動項目設(shè)置* 當(dāng)有多個項目時,運(yùn)行會運(yùn)行右側(cè)黑色加粗的項目* 想更改三種方法:* ①工具欄有個選擇框* ②在右側(cè)找到要啟動的項目,右擊設(shè)置為啟動項目* ③在右側(cè)右擊解決方案選擇屬性->啟動項目->單啟動項目/當(dāng)前選擇是現(xiàn)在打開的項目* * 七、項目的加載與卸載* 同一解決方案下,有時候打開著多個項目,如果其他項目有錯,運(yùn)行當(dāng)前項目可能受影響。* 這時候可以右擊其他項目選擇卸載(不是刪除),等需要時再重新加載即可。* */using System; //引用命名空間
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace _2.Visual_Studio知識 //定義一個叫 _2.Visual_Studio知識 的命名空間
{class Program //定義了一個名稱為Program的類{static void Main(string[] args) //這是一個方法叫Main{}}
}
3.基礎(chǔ)知識
/** 基礎(chǔ)知識* * 一、框架及執(zhí)行過程
using System; //引用命名空間namespace XXX //定義一個叫XXX的命名空間
{class XXXX //定義了一個名稱為XXXX的類{static void Main(string[] args) //這是一個方法叫Main{//在這里編寫程序}}
}* 程序的執(zhí)行過程:* Main方法是我們程序的入口方法,當(dāng)我們執(zhí)行一個程序時,會首先找到Main方法,從Main的第一句開始執(zhí)行,由上往下一句一句執(zhí)行* 當(dāng)Main方法執(zhí)行完成后(即執(zhí)行到Main方法的反大括號),程序就結(jié)束了* 一般情況下,一個項目只有一個Main方法,或者也可以沒有* * 二、輸出* * 運(yùn)行代碼:點(diǎn)擊小綠按鈕或者調(diào)試->開始調(diào)試* 小技巧:* (1)vs有的會有智能提示,回車或tab鍵會出來* (2)輸入cw,再按兩下tab鍵,可以快速打出Console.WriteLine(); 語句* * 1.Console.WriteLine("大號"); //在屏幕中換行輸出* 2.Console.Write("111");//在屏幕中不換行輸出* 3.Console.ReadKey();//當(dāng)程序執(zhí)行到Console.ReadKey();時,程序會停到這里,等待用戶從鍵盤上鍵入一個鍵,用戶鍵入這個鍵之后,程序才繼續(xù)執(zhí)行//如果沒有這一句,會一閃立馬就關(guān)了* 4.Console.Clear();//對控制臺輸出的清屏* * * 總結(jié):* (1)C#區(qū)分大小寫* (2)C#中每一個語句都必須以分號;結(jié)束* (3)這個生成的程序在項目文件夾->bin->Debug->.exe文件,其他文件都是和調(diào)試相關(guān)的* (4)程序要先 生成(編譯)后運(yùn)行,直接點(diǎn)那個啟動是把這兩步和在一起了。生成是先看看對不對,所以按F6經(jīng)常生成一下,F5是先 生成后運(yùn)行* * 三、注釋* 注釋:對寫的程序進(jìn)行解釋,是給人看的* * 1.單行注釋 // * 2.多行注釋 /*開始 *斜杠結(jié)束* 除了多行注釋語句,還可以用工具中的注釋選中的行(快捷鍵先ctrl+e,再按一下c)* 3.文檔注釋 ///* 用于對類和方法進(jìn)行注釋,在類或方法前面連續(xù)輸入三個/,會自動生成一段注釋* * 四、計算機(jī)使用的基本技巧* * 1.常用的定位快捷鍵:* (1)Home鍵:跳到這一行的最前面* (2)End鍵:跳到這一行的最后面* (3)Ctrl+Home鍵:跳到這一頁的最前面* (4)Ctrl+End鍵:跳到這一頁的最后面* (5)PageUp鍵:上翻頁(如果代碼過多,就不需要用鼠標(biāo)了)* (6)PageDown鍵:下翻頁* (7)shift鍵:幫助選中多個字符(和其他定位鍵組合使用,光標(biāo)經(jīng)過的地方都會被選中),不用再通過鼠標(biāo)選中了* 2.一段文字的刪除習(xí)慣:* 不要一個一個的刪,再先選中再一起刪 * (快速選中一行:Home+shift+End) * Backspace:刪除當(dāng)前光標(biāo)前面的* Delete:刪除當(dāng)前光標(biāo)后面的* * 3.全選/復(fù)制/粘貼/剪切* Ctrl+A/C/V/X* 注意:對話框的內(nèi)容的復(fù)制?* * 4.插入、覆蓋模式的困惑* 有時候誤點(diǎn)了Insert會出現(xiàn)一個小黑框,就是進(jìn)入了覆蓋模式,右下角會出現(xiàn)一個OVR就是覆蓋模式的意思* 再點(diǎn)一個Insert就會突出覆蓋模式,進(jìn)入插入模式* * 5.學(xué)會使用Ctrl+Z的撤銷操作* 6. ,.;()的全角還是半角問題* 敲代碼都是在英文狀態(tài)下的半角模式* * 7.遇到異常、報錯不要慌* 按住F6出現(xiàn)編譯錯誤,不要慌,先去看一下* * 8.#regin #endregion* 這對指令可以折疊一段代碼,前面會有一個+號就可以折疊(#regin后可以加注釋)*
#region 測試用
Console.WriteLine("你好世界!");
Console.ReadKey();#endregion* * * 五、了解.net* .net是一種多語言的開發(fā)平臺,開發(fā).net可以用多達(dá)幾十種語言進(jìn)行開發(fā)(多語言、單平臺(但是可以跨微軟的平臺))* Java:是一種單語言的平臺,但是可以跨平臺(單語言、多平臺)* * MSIL:微軟中間語言 Microsoft Intermediate Language* CLR:公共語言運(yùn)行時 Common Language Runtime* CLS: 公共語言規(guī)范 Common Language Specification* CTS: 通用類型系統(tǒng) Common Type System* JIT: 即時編譯器 Just In Time*/using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace _3.基礎(chǔ)知識
{/// <summary>/// 這個類中有一個Main方法,是我們程序的入口方法/// </summary>class Program{/// <summary>/// 程序運(yùn)行時,從這里開始執(zhí)行代碼/// </summary>/// <param name="args">static void Main(string[] args){Console.WriteLine("大號"); //在屏幕中換行輸出Console.Write("111");//在屏幕中不換行輸出Console.WriteLine("你是大傻der");Console.ReadKey();//當(dāng)程序執(zhí)行到Console.ReadKey();時,程序會停到這里,等待用戶從鍵盤上鍵入一個鍵,用戶鍵入這個鍵之后,程序才繼續(xù)執(zhí)行//如果沒有這一句,會一閃立馬就關(guān)了#region 測試用Console.WriteLine("你好世界!");Console.ReadKey();#endregion}}
}
4.變量
/** 變量* * 1、概念* 變量代表著一塊內(nèi)存空間,我們可以通過變量名稱向內(nèi)存 存/取數(shù)據(jù).有變量就不需要我們記憶復(fù)雜的內(nèi)存地址* * 2、變量的定義(聲明)* 數(shù)據(jù)類型 變量名* * (1)數(shù)據(jù)類型* (數(shù)值類型) int 整型* double 浮點(diǎn)型* decimal 也是浮點(diǎn)型:一般用于存儲金錢 decimal money =1000.25m (后面有個m只是表示是decimal類型) * (非數(shù)值類型)char 單個字符類型:只能存儲一個字符,并且存儲的這個字符要求用單引號引起來* string 字符串類型:就是把0個或1個或多個字符連接起來,要求用雙引號引起來* 注意:* ①在C#開發(fā)環(huán)境中,直接寫一個有小數(shù)點(diǎn)的數(shù)字,這個數(shù)字是double類型的* ②在一個小數(shù)后面加一個m或者M(jìn),就是告訴編譯器這個數(shù)字是decimal類型* * (2)變量的命名規(guī)則* 1°必須以 字母 _ 或 @ 符號開頭(不能以數(shù)字開頭)* 2°后面可以跟任意字母、數(shù)字、下劃線* 3°注意:* ①變量名不能與C#中的關(guān)鍵字重復(fù)* ②在C#中,是區(qū)分大小寫的* ③在相同的作用域內(nèi),同一變量名不能重復(fù)定義* 4°變量名要有意義,見名知意 * 5°C#變量名編碼規(guī)范——Camel命名法:首個單詞的首字母小寫,其余單詞的首字母大寫 例:studentName* 6°Pascal命名規(guī)范:每個單詞的第一個字母都大寫 例:StudentName* 7°如果使用到英文單詞的縮寫,全部用大寫!* * (3)聲明變量的三種方式:* 變量一定要先定義,再賦值,后使用* ①先定義,再賦值 int a; a=3;* ②定義變量時直接賦值 int a=3;* ③一次聲明多個同類型的變量,多個變量名稱中間用逗號分隔,最后以分號結(jié)束* int a,b,c; a=1; b=2; c=3;* int a=1,b=2,c=3;* * * * 3、變量的賦值輸出* 變量名 = 值* * (1)賦值符:* 賦值運(yùn)算符和賦值表達(dá)式* a =a +1;* 注意:* ①這里的 = 等號時賦值運(yùn)算符,賦值的意思,而不是數(shù)學(xué)意義上的相等* ②變量可以重復(fù)賦值,一旦給一個變量賦了新值,那么變量中的老值就不復(fù)存在了* * (2)連接符:* +號在C#中有兩種意義:* ①加法:兩邊參與運(yùn)算的是數(shù)值類型,則表示是數(shù)學(xué)中的加法運(yùn)算* ②連接:可以連接兩個字符串,這里的+表示連接的意思
+ 字符串變量 相當(dāng)于 + 字符串變量.Tostring()
+連接的兩個變量,如果一邊是字符串,另一邊會自動調(diào)動字符串.Tostring()方法* * (3)占位符:* 占位符由{數(shù)字}組成,數(shù)字由0開始編號* 在Console.WriteLine("")中,第一個變量/字符串可以使用占位符* 注意:* ①索引(從0開始)必須大于或等于0,且小于參數(shù)列表 的大小* ②用逗號分開的叫參數(shù),Console輸出的永遠(yuǎn)是第一個參數(shù)的內(nèi)容,后面的參數(shù)只是用于替換前面占位符的值* * 4、例:借助第三變量交換變量* int t;//定義第三變量t = a;a = b; b = t;* * 5、字符串類型:* (1)Console.ReadLine();* 作用:用于接收用戶的輸入* 注意:* 用于讓用戶從鍵盤上輸入一句話,讓程序執(zhí)行到下面這句話,就會暫停,按回車程序?qū)⒗^續(xù)執(zhí)行* 輸入的數(shù)據(jù)默認(rèn)是字符串類型,所以要定義一個字符串變量來存儲用戶輸入的值* (2)字符串轉(zhuǎn)義* 1°什么時候用?* 當(dāng)我們需要在字符串中輸入一些特殊字符時,比如:半角引號、換行、退格,就需要使用轉(zhuǎn)義字符* 2°概念:* 轉(zhuǎn)義字符是一個字符,它是由一個\和一個字母來組成具有特殊意義的一個字符* 3°常用的轉(zhuǎn)義字符:* \n :換行* \b :backspace 退格* \t :tab鍵 制表符(由多個空格組成的一個字符,具有行與行之間的對齊功能)* \\ :表示一個\* @ :在字符串前面加一個@符號有兩種意義:* ①字符串中如果有\(zhòng) ,則不再理解為轉(zhuǎn)義符* ②使字符串可以換行* (如果字符串前面加了@符號,在字符串上用兩個雙引號代表一個雙引號)*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace 變量
{internal class Program{static void Main(string[] args){}}
}
5.運(yùn)算符與表達(dá)式
/** 運(yùn)算符與表達(dá)式* * 一、算術(shù)運(yùn)算符與算術(shù)表達(dá)式* * 1、算術(shù)運(yùn)算符* ① + 加* ② - 減* ③ * 乘* ④ / 除 :整除* ⑤ % 取余、取模 :取余數(shù)* 注意:* 它們是二元運(yùn)算符,要求參與運(yùn)算的兩個操作數(shù)的類型必須相同,并且經(jīng)過運(yùn)算后的結(jié)果與操作數(shù)的類型相同* ++ :自增1 (有前加和后加)* -- :自減1 (有前減和后減)* 這兩個是一元運(yùn)算符 (如何區(qū)分一元還是二元?看有幾個操作數(shù), + 左右有兩個操作數(shù),所以是二元;++旁邊只有一個操作數(shù),所以是一元) * 在C#中,一般情況下,一元運(yùn)算符的優(yōu)先級大于二元運(yùn)算符* * 例:
c = a++: 先將 a 賦值給 c,再對 a 進(jìn)行自增運(yùn)算
c = ++a: 先將 a 進(jìn)行自增運(yùn)算,再將 a 賦值給 c
c = a--: 先將 a 賦值給 c,再對 a 進(jìn)行自減運(yùn)算
c = --a: 先將 a 進(jìn)行自減運(yùn)算,再將 a 賦值給 c * 2、算術(shù)表達(dá)式:* 由算術(shù)運(yùn)算符連接起來的式子* 3、優(yōu)先級* 先算乘除,后算加減,有括號先算括號里的,相同級別的從左至右運(yùn)算* (如果要改變計算的優(yōu)先級,用小括號,小括號可以無限制套用,但是一定要成對出現(xiàn))* 在C#中,一般情況下,一元運(yùn)算符的優(yōu)先級大于二元運(yùn)算符* * * 4、類型轉(zhuǎn)換* (1)自動類型轉(zhuǎn)換(隱式轉(zhuǎn)換):* 1°發(fā)生隱式轉(zhuǎn)換的條件:* ①兩種類型兼容:參與運(yùn)算的兩個數(shù)據(jù)類型必須相兼容(例:int和double兼容,都是數(shù)值類型)* ②目標(biāo)類型大于源類型:必須一邊的數(shù)據(jù)類型表示范圍小,一邊的表示范圍大,并且把小的轉(zhuǎn)向大的不丟失精度(從int到double)* * 2°注意:* 在自動轉(zhuǎn)換中,轉(zhuǎn)換不會都是丟失精度的,如果丟失精度,那么這個轉(zhuǎn)換肯定不會自動完成* 常見到,參與運(yùn)算的兩個操作數(shù)一個是int,一個是double,那么int類型會自動轉(zhuǎn)換成double類型* 所以:兩個int類型的運(yùn)算想得到double類型,*1.0就可以了* * (2)強(qiáng)制類型裝換(顯式轉(zhuǎn)換):* 1°背景:* 當(dāng)需要丟失精度的轉(zhuǎn)換,系統(tǒng)是不會幫我們自動轉(zhuǎn)換的,需要程序員來寫代碼完成轉(zhuǎn)換,就是強(qiáng)制類型轉(zhuǎn)換* (如double3.14到int3的轉(zhuǎn)換,會丟失0.14的精度)* 2°語法:* (數(shù)據(jù)類型名) 待轉(zhuǎn)換的值* 例:* int b = (int)3.14* * 3°條件:* 強(qiáng)制類型轉(zhuǎn)換,數(shù)據(jù)類型一定要相兼容(兼容的意思只都是數(shù)值類型,比如字符串和數(shù)值就不兼容)* * (3)字符類型的轉(zhuǎn)換——借助類方法*方式一: Convert:不再僅是內(nèi)存級別的轉(zhuǎn)換,而是考慮數(shù)據(jù)意義的轉(zhuǎn)換。Convert是一個加工、改造的過程* ①Convert.ToInt32(待轉(zhuǎn)字符串) :將字符串變成整數(shù)* ②Convert.ToDouble(待轉(zhuǎn)字符串):將字符串變成浮點(diǎn)數(shù)* ③Convert.ToString(): 一切類型都可以轉(zhuǎn)換成string類型
方式二:將字符串類型裝換為對應(yīng)的數(shù)值類型
Console.Parse(String);
int.Parse(String)
double.Parse(String)
例:string s = "123";//int a = Convert.ToInt32(s);int a = int.Parse(s);* 二、復(fù)合運(yùn)算符* += :a+=3 等價于 a=a+3* -= * *= * /=* %=* 注意: >= 大于等于號中間不能有空格** 三、關(guān)系運(yùn)算符和關(guān)系表達(dá)式* 1、關(guān)系運(yùn)算符* 在C#中,有6個關(guān)系運(yùn)算符,用于比較兩個事物之間的關(guān)系(所以為二元運(yùn)算符)* >* <* == 等于* != 不等于* >=* <=* * 2、關(guān)系表達(dá)式* 由關(guān)系運(yùn)算符連接起來的式子* 3、bool類型(布爾)* (1)bool值有兩個* 真:true* 假:false* (2)關(guān)系運(yùn)算的結(jié)果是布爾類型的* * * 四、邏輯運(yùn)算符和邏輯表達(dá)式** 1、邏輯運(yùn)算符* ① && 并且(邏輯與):兩邊都是真才是真 * ② || 或者(邏輯或):兩邊只要有一個真才是真* ③ ! 取反(邏輯非):真變假,假變真*(!是一元運(yùn)算符,&& ||是二元運(yùn)算符)** 2、邏輯表達(dá)式* 有邏輯運(yùn)算符連接起來的式子* */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace 運(yùn)算符與表達(dá)式
{internal class Program{static void Main(string[] args){int a = 5, b = 6;int c = a++ * --b;// b=b-1 (b是前減 )// c=a*b (相乘賦值給c )// a=a+1 (a是后加)Console.WriteLine(c);Console.ReadKey();}}
}
6.程序調(diào)試
/** 程序調(diào)試:* debug能力才是最重要的* * 編譯錯誤:一般是語法錯誤,編譯器通不過會直接提示,以后通不過多讀,需要經(jīng)驗(yàn)積累* 運(yùn)行錯誤(邏輯錯誤):能編譯通過,但是自己敲到代碼不符合需求邏輯,需要找出錯誤地方就需要程序調(diào)試* * 對于運(yùn)行錯誤有以下兩種調(diào)試方法:**(1)利用編輯器自帶調(diào)試功能:三步走* ①設(shè)置斷點(diǎn):在最前面的灰色處點(diǎn)一下就可以設(shè)置。斷點(diǎn):當(dāng)程序運(yùn)行到我們設(shè)置的斷點(diǎn)處,程序就會停止* ②單步運(yùn)行:點(diǎn)擊啟動調(diào)試,按F10一步一步執(zhí)行觀察變量* (F10是逐過程:遇到方法時不會進(jìn)入方法體中執(zhí)行* F11是逐語句:遇到方法時能夠進(jìn)入方法體中執(zhí)行* 跳出:可以跳出正在執(zhí)行的方法* F5繼續(xù):不會調(diào)試當(dāng)前語句,直接跳到下一條語句* )* ③觀察變量:觀察的是左下的變量列表,也可以選中一塊右擊快速監(jiān)視*(2)輸出大法:(推薦)* 利用輸出語句,在認(rèn)為錯誤的代碼塊中加輸出語句,如果輸出不符,說明這塊代碼不對,用于確定錯誤位置**注意:
寫代碼時盡量不要重現(xiàn)一大段重復(fù)代碼,這就是叫代碼冗余
盡量不要讓代碼冗余
標(biāo)志旗幟法 經(jīng)常用來解決代碼冗余
例:string username;string password;do{Console.WriteLine("請輸入用戶名:");username = Console.ReadLine();Console.WriteLine("請輸入密碼:");password = Console.ReadLine();if (username != "admin" || password != "888888"){Console.WriteLine("用戶名或密碼錯誤,請重新輸入!");}} while (username != "admin"||password!="888888");Console.WriteLine("登錄成功");Console.ReadKey();修改后:string username;string password;bool flag = false;do{flag = false;Console.WriteLine("請輸入用戶名:");username = Console.ReadLine();Console.WriteLine("請輸入密碼:");password = Console.ReadLine();if (username != "admin" || password != "888888"){Console.WriteLine("用戶名或密碼錯誤,請重新輸入!");flag=true;}} while (flag);Console.WriteLine("登錄成功");Console.ReadKey();?*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace 程序調(diào)試
{class Program{static void Main(string[] args){int i = 1;while(i<=10){Console.WriteLine(i);i++;}Console.ReadKey();}}
}
7.判斷結(jié)構(gòu)
/** 判斷結(jié)構(gòu)(分支結(jié)構(gòu)):語句在滿足條件下執(zhí)行* * 一、if單分支* 1、形式:* if(條件)* {* 語句1;* 語句2;* 語句3;* }* * 2、執(zhí)行過程:* 首先判斷條件的結(jié)果,如果條件為true,則執(zhí)行語句.如果條件為false,則跳過語句,執(zhí)行后面的語句* * 3、注意:* (1)if后面括號中的條件(是關(guān)系、邏輯表達(dá)式),要能計算成一個bool類型的值* (2)和if語句有關(guān)系的語句只有后面大括號中的內(nèi)容* * 二、if-else雙分支* 1、形式:* if(條件)* {* 語句; //1* }* else* {* 語句;//2* }* * 2、執(zhí)行過程:* 如果條件結(jié)果為true,執(zhí)行if后語句1,否則條件為false,執(zhí)行else后語句2* 根據(jù)判斷條件結(jié)果,總要執(zhí)行一個* * * 三、if-else-if多分支* 1、形式:* if(條件1)* {* //1* }* else if(條件2)* {* //2* }* else* {* //3* }* 2、執(zhí)行流程:* 第一個條件不成立才會進(jìn)入下一個,一旦有一個條件成立,就會執(zhí)行當(dāng)前后的語句,執(zhí)行完跳判斷* 3、注意:* 判斷語句也可以進(jìn)行嵌套* if()* {* if()* {* * }* else* {* * } * }* * 四、switch-case語句* * 1、形式:* * switch(表達(dá)式)* {* case 值1:* 語句1;* break;* * case 值2:* 語句2;* break;* * //...* * default:* 語句;* break;* }* * 2、執(zhí)行過程:* 首先計算表達(dá)式,然后根據(jù)計算結(jié)果匹配case后面的值* 如果有匹配項,則執(zhí)行匹配后面的語句,知道break語句跳出判斷* 如果所有的case值都不匹配,那么有default則執(zhí)行default后面的語句,直到break結(jié)束* 如果沒有default,則跳出switch-case什么都不執(zhí)行* * 3、if-else-if與switch-case語句的比較* (1)相同點(diǎn):* 都可以實(shí)現(xiàn)分支結(jié)構(gòu)* (2)不同點(diǎn):* switch-case:一般只能用于等值比較* if-else-if:可以處理范圍* * * 4、例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace 第三題
{internal class Program{static void Main(string[] args){Console.WriteLine("請輸入倆數(shù)和一個運(yùn)算符:"); int a=Convert.ToInt32(Console.ReadLine()); //輸入int b=Convert.ToInt32(Console.ReadLine());string c=Console.ReadLine();switch(c) {case "+": Console.WriteLine(a + b); break;case "-":Console.WriteLine(a - b);break;case "*":Console.WriteLine(a * b);break;case "/": if (b == 0){Console.WriteLine("0不能做除數(shù)");}else{Console.WriteLine(a/ b);}break;default:Console.WriteLine("不能識別運(yùn)算符");break;}Console.ReadKey();}}
}* * * 五、三元表達(dá)式* 1、作用:可以代替if-else,有時使用更簡便* 2、形式:* 表達(dá)式1 ? 表達(dá)式2: 表達(dá)式3* 例:* int a=100,b=20;* int max = a>b? a:b* Console.WriteLine(max);* * 3、執(zhí)行過程:* 首先計算表達(dá)式1,表達(dá)式1應(yīng)該是一個能夠計算成bool類型的值 (相當(dāng)于if后的條件)* 如果表達(dá)式1的值為true,則表達(dá)式2的值作為整個表達(dá)式的值* 如果表達(dá)式1的值為false,則表達(dá)式3的值作為整個表達(dá)式的值* 4、注意:* 表達(dá)式2和表達(dá)式3的類型一定要相同或者相容(能夠發(fā)生自動轉(zhuǎn)換)* */using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace 判斷
{internal class Program{static void Main(string[] args){}}
}
8.循環(huán)結(jié)構(gòu)
/** 循環(huán)結(jié)構(gòu):語句在滿足條件下執(zhí)行多次* * 一、while循環(huán)* 1.特點(diǎn):先判斷,再執(zhí)行* 2.形式:
while(循環(huán)條件)
{循環(huán)體;
}* 3.執(zhí)行過程:* 先判斷循環(huán)條件,如果條件為true,則執(zhí)行循環(huán)體,循環(huán)體執(zhí)行完,再去執(zhí)行循環(huán)條件;* 如果條件為false,則跳出循環(huán),循環(huán)結(jié)束* * 二、do-while循環(huán) * 1.特點(diǎn):先執(zhí)行,再判斷* 2.形式:
do
{循環(huán)體;
}while(循環(huán)條件);* * 3.執(zhí)行過程:* 先執(zhí)行循環(huán)體,* 執(zhí)行完循環(huán)體再判斷循環(huán)條件是否成立,如果條件為true,則執(zhí)行循環(huán)體,如果條件為false,則跳出循環(huán)* * 注意:* 假如循環(huán)條件一開始就不成立,對于while循環(huán),一次都不會執(zhí)行,對于do-while循環(huán)體會執(zhí)行一次* 所以:do-while循環(huán)體至少會執(zhí)行一次,while循環(huán)體可能一次都不會執(zhí)行* 所以一般要求先輸入一次的循環(huán)一般都考慮用do-while循環(huán) * * 擴(kuò)展: * (1)try-catch的使用:* 1.作用:檢測異常,可以用try-catch來調(diào)試代碼塊* 2.格式:
try //檢測
{//有可能出現(xiàn)異常的代碼
}
catch
{//出錯后的處理
}**3.執(zhí)行過程:*如果try中的代碼沒有出現(xiàn)異常,則不會執(zhí)行catch中的代碼*如果try中的代碼出現(xiàn)異常,則程序立即跳到catch中*4.常用于輸入出現(xiàn)異常時*例:
try
{int age = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("你剛剛輸入的年齡為:"+age);
}
catch {Console.WriteLine("輸入錯誤!");
}
Console.ReadLine(); ***(2)通過循環(huán)限制只能輸入某些值
例:
while(answer!="y"&&answer!="n")
{Console.WriteLine("只能輸入y和n,請重新輸入!");answer=Console.ReadLine();
}** 三、for循環(huán)* 1.特點(diǎn):一般用于已知循環(huán)次數(shù)的循環(huán)* 2.形式:
for(1循環(huán)初始化;2循環(huán)條件;3用于改變循環(huán)變量的值)
{4循環(huán)體;
}* * 3.執(zhí)行過程:* 首先執(zhí)行1循環(huán)變量初始化,用于定義循環(huán)變量和對循環(huán)變量賦初值* 然后執(zhí)行2循環(huán)條件,如果為true,執(zhí)行4循環(huán)體,如果為false,跳出循環(huán)* 然后4循環(huán)體執(zhí)行完,再去執(zhí)行3用于改變循環(huán)變量的值* 然后再執(zhí)行2循環(huán)條件,依次類推* * 注意:1 2 3 4都可以省略,如果省略2循環(huán)條件,將是一個死循環(huán)* * 4.循環(huán)的嵌套* 例:輸出九九乘法表for (int i = 1; i <= 9; i++)//外層循環(huán):循環(huán)9次{//寫在這里的代碼屬于外層循環(huán)for (int j = 1; j <= i; j++) //內(nèi)層循環(huán):外層循環(huán)每執(zhí)行1次,內(nèi)層循環(huán)執(zhí)行i次{//寫在這里的代碼屬于內(nèi)層循環(huán)}//寫在這里的代碼屬于外層循環(huán)}* 總結(jié):* 三種循環(huán)可以相互轉(zhuǎn)化,沒有說用哪個循環(huán)對錯,只能說用哪個循環(huán)更方便一些、邏輯更清晰一些* 已知循環(huán)次數(shù)的一般用for循環(huán),* 循環(huán)條件比較復(fù)雜,跟循環(huán)次數(shù)無關(guān)的一般用while和do-while循環(huán)* * 四、break和continue 跳轉(zhuǎn)語句* 1.break:* (1)可以用于switch-case判斷中,用于跳出switch* (2)用于循環(huán)中,立即跳出(終止)break所在的循環(huán),一般和if配合使用* 2.continue:* 用于循環(huán)中,結(jié)束本次循環(huán),繼續(xù)下一次循環(huán)* 3.goto:* 不建議使用,來回跳,因?yàn)闀茐慕Y(jié)構(gòu)不便于閱讀,要慎重使用* * */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace 循環(huán)
{class Program{static void Main(string[] args){//格式1://for(int i=1;i<=9;i++) //i控制行//{// for(int j=1;j<=i;j++) //j控制列// {// Console.Write("{0}*{1}={2} ", j,i,i*j);// }// Console.WriteLine();//}//Console.ReadKey();//格式2://for(int i = 1; i <= 9; i++) //外層循環(huán):i控制行數(shù)//{// for (int j = i; j <= 9; j++) //內(nèi)層循環(huán):j控制列數(shù),表示第i行的第j個式子// {// Console.Write("{0}*{1}={2} ", i, j, i * j);// }// Console.WriteLine();//}//Console.ReadKey();}}
}
9.常量、枚舉類型
/** 常量、枚舉類型* * 一、常量* 常量與變量對應(yīng),常量是指值不可以改變的(變)量* 1、定義:* const 數(shù)據(jù)類型 常量名 = 常量值;* 和變量定義形式很像,只是在前面加上了一個const修飾符* * 例:* const double PI = 3.14; //定義常量賦初值PI = 3.1415;//錯誤* * 注意:* 在定義時賦值,在其他時候不允許修改這個值* * 2、常量的作用* ①可以重復(fù)使用* ②在寫程序的時候,可以防止被惡意的修改掉* * 二、枚舉類型* * 1、概念:* 枚舉類型:可以自己重新定義一種類型,在定義這種類型的時候一起定義了這種類型所有的值* * 2、定義:
enum 自己起的類型名稱
{值1,值2,...值n};* 注意:* 枚舉的定義一般和類的定義在同一個級別,這樣在同一個命名空間下的所有類就都可以使用這個枚舉了。(方法中/類中也可以)* * 3、作用* ①限制用戶不能隨意賦值,只能在定義枚舉時列舉的值中選擇(枚舉變量 = 枚舉類型名.值)* ②不需要死記每一個值是什么,只需要選擇相應(yīng)的值(在vs中,使用枚舉類型先點(diǎn)空格,會提示作用,方便程序員使用)* * 4、注意:* ①枚舉類型內(nèi)的值不需要加雙引號* ②定義枚舉類型時,其中的值不能是int類型* ③枚舉類型都可以強(qiáng)制轉(zhuǎn)換成int類型* ④枚舉類型的值在定義時是有一個默認(rèn)編號的,依次從0開始* sex = Gender.女; Console.WriteLine(sex);Console.WriteLine((int)sex);* 注意:可以在枚舉類型中的值中修改編號,修改一個值的編號,后面的會是前面的編號+1,但是盡量出現(xiàn)重復(fù)編號* enum Gender{男=0, //編號是0 女, //編號是1a=1, //編號是1,盡量不要出現(xiàn)這種情況b //編號是2}** ⑤如何把一個字符串轉(zhuǎn)換成字符類型?* //枚舉類型 枚舉變量 = (自枚)(Enum.Parse(typeof(自枚),"待轉(zhuǎn)換的字符串");* 注意:如果讓用戶輸入枚舉的值,最好使用try-catch防止輸入的不是枚舉列表中的值* * */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace 常量_枚舉
{/// <summary>/// 定義了一個類型叫Gender的枚舉類型,他的值有兩個:男和女/// </summary>enum Gender{男, //枚舉類型內(nèi)的值不需要加雙引號女}internal class Program{static void Main(string[] args){Gender sex; //定義Gender類型的變量,變量名叫sexConsole.WriteLine("請輸入你的性別:");//sex = Gender.女; //賦值,不能賦枚舉之外的值//Console.WriteLine(sex);//Console.WriteLine((int)sex);//枚舉類型 枚舉變量 = (自枚)(Enum.Parse(typeof(自枚),"待轉(zhuǎn)換的字符串");string s = Console.ReadLine();try{sex = (Gender)(Enum.Parse(typeof(Gender), s));switch(sex){case Gender.男:Console.WriteLine("男性");break;case Gender.女:Console.WriteLine("女性");break;}}catch{Console.WriteLine("你輸入的性別有誤上!"); }Console.ReadKey();}}
}
10.結(jié)構(gòu)體類型
/** 結(jié)構(gòu)體類型* 注意:C#中的結(jié)構(gòu)比C語言中的結(jié)構(gòu)體擴(kuò)展了很多用法,只看C的結(jié)構(gòu)體的話就局限了* C#中的結(jié)構(gòu)體成員不僅可以是變量,還可以是方法* * 1.作用* 可以解決:* ①比如為了存儲一個人的信息,要聲明一組變量,當(dāng)我們要存儲n個人的信息時,就要聲明n組變量 的問題* (解決了變量名重復(fù)定義的問題)* ②存儲一個信息的這幾個變量間沒有關(guān)系,容易記亂* (不會再把變量記混了)* * 2.定義 * * 訪問修飾符 struct 自己起的結(jié)構(gòu)體類型名稱* {* //定義結(jié)構(gòu)成員:可以是變量,也可以是方法* //注意:定義結(jié)構(gòu)體成員前也要加訪問修飾符* * } //{}后沒有分號;* * 定義好一個結(jié)構(gòu)后,就可以直接聲明相應(yīng)的變量了,* 聲明好變量后,通過變量名.成員名 來訪問結(jié)構(gòu)的成員* * 3、擴(kuò)展——計算機(jī)的單位* 0~255 一共256個數(shù) 2的八次方=256 是一個字節(jié)* * 二進(jìn)制表示 0 和 1 * 計算中的最小單位叫 “位” ,bit , 比特, 0101就是4個比特 b* 一個一個位處理太慢了,就把8個二進(jìn)制位分成一組,那么8個二進(jìn)制位叫做字節(jié)Byte B ,B是計算機(jī)能夠處理的處理的最小單位* 1KB(千字節(jié)) =1024B* 1MB(兆字節(jié)) = 1024KB* 1GB(吉字節(jié)) = 1024MB* 1TB(太字節(jié)) = 1024GB* * Bps 傳輸速度 bit per second* */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace 結(jié)構(gòu)
{public enum Gender{男,女,}public struct Person{public string name;public Gender sex;public int age;}class Program{static void Main(string[] args){Person onePerson;onePerson.name = "zhangsan";onePerson.age = 20;onePerson.sex = Gender.男;Person secPerson;secPerson.name = "lisi";secPerson.age = 26;secPerson.sex = Gender.女;Console.WriteLine("隨意輸出一個{0}", secPerson.name);Console.ReadKey();} }
}
11.數(shù)組
/** 數(shù)組* * 一、數(shù)組的作用* ①可以幫我們一次聲明多個同類型的變量* ②這些變量在內(nèi)存中是連續(xù)存儲的* * 二、數(shù)組的聲明(定義)、賦值與取值、遍歷、輸出* * 1、形式:* ① 數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組長度]* 例:int[] score = new int[5]; //聲明了一個長度為5的數(shù)組,數(shù)組名叫score* 通俗點(diǎn)說:聲明了一個數(shù)組,里面包含了5個int類型的變量,數(shù)組名叫score,里面5個int類型的變量叫做數(shù)組的元素* 并且對這5個元素從0依次開始編號到4 score[0]~score[4]* 注意:* int、double、decimal等類型的數(shù)值數(shù)組一旦聲明,里面的每一個元素都被初始化成0,* 而char類型的字符數(shù)組、string類型的字符串?dāng)?shù)組編譯器不會對其進(jìn)行初始化,為Null空int[] score = new int[5]; //聲明了一個長度為5的數(shù)組,數(shù)組名叫scorescore[0] = 10;score[4] = 20;Console.WriteLine(score[0]);Console.WriteLine(score[4]);Console.WriteLine(score[3]);Console.ReadKey();* * ② 數(shù)據(jù)類型[] 數(shù)組名 = {下標(biāo)為0的元素值,下標(biāo)為1的元素值,......}; //中間元素用逗號,隔開* 例:int[] score = {1,3,8}; //score數(shù)組長度為3,其中score[0]=1,score[1]=3,score[2]=8* string[] names={"zhangsan","lisi","wangwu"};* * ③ 數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[]{} 例:int[] score = new int[]{1,3,8};* 數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組長度]{下標(biāo)0,下標(biāo)1...} 例:int[] score = new int[3]{1,3,8};* 例: int[] score = new int[5]{1,2,3}//錯誤* * 2、如何訪問數(shù)組:* 通過下標(biāo)(索引)來訪問數(shù)組:數(shù)組名[下標(biāo)],下標(biāo)從0開始* 例:score[0] = 10;* 注意:* 數(shù)組長度:通過 數(shù)組名.Length 可以獲得數(shù)組的長度(即數(shù)組中有幾個元素)* * 3、數(shù)組的賦值與取值:* for(int i=0;i<score.length;i++)* {* console.writeline("請輸入第{0}個人的成績",i);* score[i]=Convert.ToInt32(Console.ReadLine());//對數(shù)組中的元素進(jìn)行賦值* sum+=score[i];// 遍歷數(shù)組,求數(shù)組中所有元素的和* }* 4、數(shù)組的遍歷:* for(int i=0;i<score.length;i++)* 三、數(shù)組的應(yīng)用* 1、前后交換* int=temp;* temp=a[i];* a[i]=a[a.Length-1-i];* a[a.length-1-i]=temp; * * 2、冒泡排序* (1)思路:* 讓數(shù)組中的n個元素依次進(jìn)行兩兩比較(第i個數(shù)與第i+1個數(shù)比較),* 經(jīng)過n-1趟的兩兩比較,第t趟的比較次數(shù)是n-t,每趟比較完都讓當(dāng)前最值排到當(dāng)前最后* 核心點(diǎn):* ①* 趟數(shù):n個數(shù)需要排n-1趟,* 每趟次數(shù):第t趟的比較次數(shù)是n-t次(趟數(shù)i是從0開始數(shù),所以t=i+1* ②要從大到小排序,兩兩比較的時候使用<;從小到大排序用>* * (2)模板:* for(int i=0;i<n.length-1;i++)// 控制比較趟數(shù):共n-1趟(i+1表示當(dāng)前是第幾趟)* { * for(int j=0;j<n.Length-(i+1);j++)//控制每趟的兩兩比較次數(shù):每趟比較 n-t次,t表示當(dāng)前是第t趟,因?yàn)閕是從0開始數(shù),t=i+1* {* if(n[j]<n[j+1]) // 從大到小,用<,從小到大,用>* {* //交換變量* int temp = n[j];* n[j]=n[j+1];* n[j+1]=temp;* } * }* }* * 四、二維數(shù)組* int[,] a = new int[3, 4] //二維數(shù)組初始化{{ 100,90,80,70},{ 90,90,80,60 },{ 50,70,40,80},};for(int i=0; i <3; i++) //求和遍歷二維數(shù)組,并且輸出平均值{int sum = 0;for(int j=0;j<4;j++){sum += a[i, j];}Console.WriteLine("{0}班的平均分是{1}",i+1,sum/4.0); //除以4.0防止精度缺失}Console.ReadKey();}* */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace 數(shù)組
{internal class Program{static void Main(string[] args){//int[] score = new int[5]; //聲明了一個長度為5的數(shù)組,數(shù)組名叫score//score[0] = 10;//score[4] = 20;//Console.WriteLine(score.Length);//Console.WriteLine(score[0]);//Console.WriteLine(score[4]);//Console.WriteLine(score[3]);//Console.ReadKey();int sum = 0;//定義數(shù)組int[] score = new int[10]; //對數(shù)組中的元素進(jìn)行賦值for(int i=0;i<score.Length;i++) {Console.WriteLine("請輸入第{0}個人的成績",i+1);score[i] = Convert.ToInt32(Console.ReadLine());//sum+=score[i]; }//遍歷數(shù)組,求數(shù)組中所有元素的和for (int i = 0; i <score.Length; i++) {sum += score[i];}//輸出:輸出數(shù)組中的每一個元素的值for (int i = 0; i <score.Length; i++) {Console.WriteLine("第{0}個人學(xué)生的成績?yōu)閧1}分", i + 1, score[i]);}Console.Clear(); //清屏//輸出平均成績Console.WriteLine("{0}個人的平均成績?yōu)?{1}", score.Length, sum / score.Length);Console.ReadKey();}}
}
12.方法
/** 方法、參數(shù)、返回值* * 一、方法(函數(shù))* 在C#中函數(shù)、方法統(tǒng)一稱為方法,有的人稱靜態(tài)為函數(shù),非靜態(tài)的為方法,在這我們統(tǒng)一稱為方法* 方法就一堆代碼進(jìn)行重用的一種機(jī)制。方法就是一段代碼,這段代碼可能有輸入的數(shù)據(jù)叫做參數(shù),可能會有返回的執(zhí)行結(jié)果叫做返回值* * 1、作用:* 用來復(fù)用代碼的,當(dāng)我們在一個程序中反復(fù)的寫了同樣的代碼,那一般情況下,我們可以把需要重復(fù)寫的代碼定義在一個方法中,用的時候只需要調(diào)用就行了* 比如Console.WriteLine();就是一個方法* * 2、定義:* [訪問修飾符] [static] 返回值類型 方法名([參數(shù)列表]) //[]內(nèi)的表示可以省略* {* 方法體;* [return 返回值];* }* * 注意:* (1)方法一般要定義在類中,一般寫在Main()方法后面* (2)如果方法沒有返回值,則返回值類型寫void* (3)方法的命名規(guī)則:方法名開頭大寫,參數(shù)名開頭小寫,參數(shù)名、變量名要有意義* (4)如果方法沒有參數(shù),()不能省略* * 3、方法的調(diào)用:* (1)對于靜態(tài)方法(有static修飾的都是靜態(tài)方法):* ①不在同一個類中,通過 類名.方法名();調(diào)用* ②如果是在本類中調(diào)用本類的方法,可以只寫方法名(); 也可以通過類名.方法名();調(diào)用* * 4、return可以立即退出本方法* * 二、參數(shù)* 1、變量的作用域(聲明周期)* 在方法中定義的變量成為局部變量,其作用域從定義開始,到其所在的大括號(語句塊)結(jié)束為止* 注意:* ①字段:一個變量一旦定義在方法外,類的里面,就叫做類的字段,這個變量就可以被本類的所有方法所訪問* 但是要注意,靜態(tài)方法只能訪問靜態(tài)字段* ②由const修飾的常量不能定義為靜態(tài)的* * 2、在一個方法中想要訪問另一個方法中的變量,怎么辦?* 通過 參數(shù)和返回值* * 3、形參和實(shí)參 * 在方法名后面的括號內(nèi)定義變量,叫作這個方法的參數(shù),這里定義的變量用于接收調(diào)用者傳過來的數(shù)據(jù)* 注意:* ①如果一個方法一旦有參數(shù),那么調(diào)用者就必須傳參數(shù),并且傳參數(shù)的個數(shù)、類型與對應(yīng)位置上的個數(shù)、類型必須一致* ②參數(shù)的作用域就是下面的方法體中* ③當(dāng)形參是數(shù)組的時候,我們傳數(shù)組名* * 三、返回值* 當(dāng)調(diào)用者想訪問我們方法中的變量時,可以通過返回值返回* 只要在方法中使用了返回值,那么在調(diào)用方法中,前面就應(yīng)該用一個變量來接收方法的返回值* 例:* string s = Console.Readline();* int x = Convert.ToInt32("32");* * 注意:* ①一個方法可以多個參數(shù),但是只能有一個返回值,也可以沒有* ②一旦一個方法有返回值,那么在這個方法中,就必須通過return語句返回一個值,并且這個值要與返回值類型是相同的* * 四、例:ReadInt()用法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ReadInt__用法
{internal class Program{static void Main(string[] args){Console.WriteLine("請輸入一個數(shù):");int x = ReadInt();Console.WriteLine(x);Console.ReadKey();}public static int ReadInt(){int number = 0;do{try{number = Convert.ToInt32(Console.ReadLine());return number;}catch{Console.WriteLine("輸入有誤,請重新輸入!");}}while (true);}}
}* * * 五、方法的重載* 一般在同一個類中,方法名相同,但方法的參數(shù)的個數(shù)不同,或者對應(yīng)位置上的參數(shù)類型不同,才能構(gòu)成方法的重載* 注意:* 方法重載和返回值沒有關(guān)系* * * * * */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace 方法
{internal class Program{static void Main(string[] args){//string s = "123";int a = Convert.ToInt32(s);//int a = int.Parse(s);//調(diào)用者Add1(10, 20); //實(shí)參int b = Add2(10, 20);Console.WriteLine(b);Console.ReadKey();}//被調(diào)用者public static void Add1(int a, int b) //形參{Console.WriteLine("a+b={0}", a + b);}public static int Add2(int a, int b){return a + b;}}
}
13.outref用法
/** * out的用法 * 作用:當(dāng)一個方法想返回多個值的時候,可以通過out實(shí)現(xiàn) * 例:下方代碼* 實(shí)現(xiàn)步驟:* (1)在方法的參數(shù)類型前加out,那么傳參數(shù)的時候也必須在number前加out* 表明這個參數(shù)不是傳入的,而是用來傳出值的* * (2)如果參數(shù)是以out形式傳入的,那么在傳入前可以不賦初值* * (3)在方法中對于由out修飾的參數(shù),必須賦值,并且必須在使用前賦值* * out和ref:* out用于傳出值,方法中必須對out修飾的傳數(shù)進(jìn)行賦值* ref可以理解成雙向的,既可以傳入,又可以傳出* 在傳參數(shù)的過程中,如果參數(shù)有out或ref修飾的話,那么改變方法中的參數(shù)變量的值,調(diào)用者方法中的變量的值也會相應(yīng)的改變* */using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace outref用法
{internal class Program{static void Main(string[] args){int number;int result = Test(out number);Console.WriteLine("number={0} result={1}", number, result);Console.ReadKey();}static int Test(out int a) {a = 10;a = a + 1;return 200;}}
}
14.常用方法
/* * 常用類和方法;* 1、Math類 * Math.Round(); //四舍五入函數(shù) * Math.Sqrt(); //開平方函數(shù) * 例1:輸入等邊三角形的邊長求面積,保留2位小數(shù)
using System; namespace 求等邊三角形面積
{ class Program { static void Main(string[] args) { Console.WriteLine("請輸入等邊三角形的邊長:"); string a=Console.ReadLine(); //輸入邊長為字符串類型 double x = Convert.ToDouble(a); //轉(zhuǎn)化為浮點(diǎn)型 double ans = Math.Round(x * x * Math.Sqrt(3) / 4.0 , 2); //計算面積公式,并保留兩位小數(shù) Console.WriteLine(ans); //輸出面積 Console.ReadKey(); } }
}
*
* 例2:編一個程序,輸入一個正數(shù),對該數(shù)進(jìn)行四舍五入到個位數(shù)的運(yùn)算。
* 例如,實(shí)數(shù)12.56經(jīng)過四舍五入運(yùn)算,得到結(jié)果13;而12.46經(jīng)過四舍五入運(yùn)算,得到結(jié)果12。
using System;
namespace 第六題
{ internal class Program { static void Main(string[] args) { double a=Convert.ToDouble(Console.ReadLine()); //輸入 Console.WriteLine(Math.Round(a,0)); //四舍五入到個位輸出 Console.ReadKey(); } }
}
* 2、Random類 隨機(jī)數(shù)
* 例:編寫一個擲骰子100次的程序,并輸出各個點(diǎn)數(shù)出現(xiàn)的次數(shù)
using System;
namespace 第6題
{ internal class Program { static void Main(string[] args) {int[] a = new int[7]; Random random = new Random(); //定義隨機(jī)數(shù)對象 for(int i=0;i<100;i++) { int res=random.Next(1,7); //能隨機(jī)生成[1,7)范圍內(nèi)的數(shù),注意不會到7,即區(qū)間范圍是[1,6] a[res]++; //利用"桶"的思想 } Console.WriteLine("擲骰子100次后:"); for(int i=1;i<=6;i++) { Console.WriteLine("{0}出現(xiàn)的次數(shù)為{1}", i, a[i]); } Console.ReadKey(); } } }
*/