C#语言基础
第一部分 了解C#
C#是微軟公司在2000年7月發(fā)布的一種全新且簡單、安全、面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,是專門為.NET的應(yīng)用而開發(fā)的。體現(xiàn)了當(dāng)今最新的程序設(shè)計(jì)技術(shù)的功能和精華。.NET框架為C#提供了一個(gè)強(qiáng)大的、易用的、邏輯結(jié)構(gòu)一致的設(shè)計(jì)環(huán)境。其特點(diǎn):
- 語言簡潔
- 保留了C++的強(qiáng)大功能;
- 快速應(yīng)用開發(fā)功能;
- 語言的的自由性;
- 強(qiáng)大的Web服務(wù)器控件;
- 支持跨平臺;
- 與XML相融合;
第二部分 C#語言基礎(chǔ);
一、C#項(xiàng)目的組成結(jié)構(gòu);
1、項(xiàng)目后綴
.config——配置文件(存放配置參數(shù)文件)
.csproj——項(xiàng)目文件(管理文件項(xiàng))
.sln——解決方案文件(管理項(xiàng)目)
.cs——源文件(程序代碼)
注:后綴不同代表文件類型也不同,這些文件后綴類型會在“解決方案資源管理器”中看到。
2、函數(shù)的四要素:名稱,輸入,輸出,加工。
3、主函數(shù),輸出語句,輸入語句:
//命名空間
namespace ConsoleApplication1
{//類
??? class Program
??? {
??????? //程序的入口
static void Main(string[] args)
??????? {
?????????? //輸出語句,打印不換行
?????????? Console.Write("這是我的第一個(gè)C#程序!");
?????????? //輸出語句,打印完成換行
?????????? Console.WriteLine("Hello world!");
?????????? //輸入語句,等待直到接收到回車命令為止,獲取一整行內(nèi)容
?????????? //一個(gè)等號表示賦值號
?????????? string s = Console.ReadLine();
?????????? Console.WriteLine(s);
?????????? Console.ReadLine();
???????????}
???? }
}
注意:●輸出:
Console.WriteLine("這是我的第一個(gè)程序。");
Console.WriteLine("這是第二行代碼。");
Console.Write("這是要輸出的文字。");注意:沒有換行
注意:
1.大小寫敏感;
2.所有的符號全都用英文;
3.不要漏掉;。
●輸入:
string s = Console.ReadLine();
//這句話的意思是從控制臺程序讀取一整行內(nèi)容放到s這個(gè)容器里面
Console.WriteLine("你剛剛輸入的是:"+s);
string -字符串類型
s -變量名
= -賦值
Console.ReadLine(); - 從控制臺程序讀取一整行
4、快捷鍵的使用
● Alt + →提示,需要執(zhí)行程序時(shí)點(diǎn)擊啟動或Ctrl+F5;
● ctrl + K(ctrl + E), 然后按ctrl + C,注釋本行(軟件工具欄中有快捷圖標(biāo));
● ctrl + K(ctrl + E), 然后按ctrl + U,取消注釋(軟件工具欄中有快捷圖標(biāo));
● Shift + delete,一刪刪一行;
● Ctrl + X,剪切一行;Ctrl + Z,回復(fù);
● Ctrl + Shift + Space,將光標(biāo)放在方法函數(shù)括號里面時(shí)使用,顯示重載
5、注意事項(xiàng)
(1)、注釋和[取消注釋]:
● 選中相應(yīng)的行,點(diǎn)擊工具欄中的注釋選中行[取消注釋選中行];
● 選中相應(yīng)的行,使用快捷鍵:Ctrl+K Ctrl+C [Ctrl+K Ctrl+U]
● 手動注釋:在不要的行前面加//(注釋一整行)
● 注釋其中一段代碼:/*這里面是代碼 */
● 注釋的作用://這兩行是輸出的功能
技巧:
● 寫的代碼盡量使用智能感知功能;
● 先寫總體,再完善細(xì)節(jié);
● 自動完成單詞功能。Alt+→
例如:/*表示注釋一段內(nèi)容
?????? Console.Write("請輸入你的姓名:");
?????? string name = Console.ReadLine();
?????? Console.Write("請輸入你的年齡:");
?????? string age = Console.ReadLine();
?????? Console.Write("\n");
?????? //第一種方式
?????? //Console.WriteLine("你的姓名是"+name+",今年"+age+"歲了。");*/
?????? //加號在遇到string類型的時(shí)候表示拼接
?????? //第二種方式
?????? //Console.WriteLine("你的姓名是{0},今年{1}歲了。",name,age);
?????? //Console.ReadLine();
(2)、在一行聲明相同類型的多個(gè)變量之間用逗號分開。
例:int a, b;//聲明變量類型,用逗號隔開
(3)、同一語句中,不能對同一個(gè)變量名聲明成同一類型兩次。
例:int a = 4; int a = 5;//錯(cuò)誤
綜上練習(xí)題:案例:輸入姓名,年齡,單位,
??????????? ??整合成一個(gè)流暢的句子顯示出來。
主要程序:Console.Write ("請輸入你的姓名:");
?????????? string name = Console.ReadLine();
?????????? Console.Write("請輸入你的年齡:");
?????????? string age = Console.ReadLine();
?????????? Console.Write("請輸入你的單位:");
?????????? string danwei = Console.ReadLine();
?????????? Console.WriteLine("你的姓名是"+a+",今年"+b+"歲了,在"+c+"實(shí)訓(xùn)");
?????????? Console.ReadLine();
"你的名字是***,今年**歲了,在**實(shí)訓(xùn)。"將a,b,c代入***。
"你的名字是"+a+",今年"+b+"歲了,在"+c+"實(shí)訓(xùn)。"
?
二、數(shù)據(jù)類型
| 大類 | 小類 | C#語言 | .net語言(通用語言) | 說明 | 大小(字節(jié)) | 值區(qū)間 |
| 基本數(shù)據(jù)類型(值類型) | 整型 | sbyte | SByte | 8位有符號整數(shù) | 1 | -128~127(負(fù)的2的7次方~正的2的7次方減1) |
| short | Int16 | 16位有符號整數(shù) | 2 | -32768~32767(負(fù)的2的15次方~正的2的15次方減1) | ||
| int | Int32 | 32位有符號整數(shù) | 3 | (負(fù)的2的31次方~正的2的31次方減1) | ||
| long | Int64 | 64位有符號整數(shù) | 4 | (負(fù)的2的63次方~正的2的63次方減1) | ||
| byte | Byte | 8位無符號整數(shù) | 1 | 0~255 (0~2的8次方減1) | ||
| ushort | UInt16 | 16位無符號整數(shù) | 2 | (0~2的16次方減1) | ||
| uint | UInt32 | 32位無符號整數(shù) | 3 | (0~2的32次方減1) | ||
| ulong | UInt64 | 64位無符號整數(shù) | 4 | (0~2的64次方減1) | ||
| 浮點(diǎn)型 | float | Single | 32位單精度浮點(diǎn)數(shù) | 4 | 1.5 × 10?45?到 3.4 × 1038 | |
| double | Double | 64位雙精度浮點(diǎn)數(shù) | 8 | 5.0 × 10?324?到 1.7 × 10308 | ||
| decimal | Decimal | 128精確浮點(diǎn)數(shù) | 16 | 1.0 × 10?28?到大約 7.9 × 1028 | ||
| 字符型 | char | Char | 16位Unicode字符,放在''里的是字符 | 2 | 任意字符 | |
| 布爾型 | bool | Boolean | 表示true或者false | 1 | True或Flase | |
| 日期時(shí)間 | datetime | DateTime | ? | ? | ? | |
| 結(jié)構(gòu)體 | struct | Struct | ? | ? | ? | |
| 枚舉類型 | enum | Enum | ? | ? | ? | |
| 引用類型 | 字符串類型 | string | String | ? | ? | 字符序列 |
| 類 | ? | ? | ? | ? | ? | |
| 數(shù)組 | ? | ? | ? | ? | ? | |
| 集合 | ? | ? | ? | ? | ? |
1、基本數(shù)據(jù)類型:值類型
⑴、整數(shù)類型:int(最常用)
int a = 2;
⑵、浮點(diǎn)型:double(最常用)是C#默認(rèn)小數(shù)類型,float用需加后綴f,decimal用需加后綴m。
double b = 3.14;
a = (int)b;
float c = 3.14f;
decimal d = 3.14m;
⑶、布爾型:用于判斷,只允許放TRUE或者FALSE。
bool e = false;
e = true;
2、引用類型:字符串型string,長度較長,定義時(shí)用雙引號。
string ss = "Hello world!";
Console.WriteLine(e);
3、類類型
object 所有其他類型的最終基類
4、接口類型:interface
三、C#轉(zhuǎn)義字符
\’ 單引號???? \” 雙引號???? \\ 反斜杠?? \0 空
\a 警告(產(chǎn)生峰鳴)?? \b 退格??? \f 換頁?? \n 換行
\r 回車???? \t 水平制表符???????? \v 垂直制表符
四、變量、常量
1、變量名的命名規(guī)則:
●變量名組成:字母,數(shù)字,下劃線,@,漢字。
●首字母只能用字母,下劃線,@,漢字
●不能與關(guān)鍵字重名
2、變量的定義:
數(shù)據(jù)類型? 變量名 [=值];?? //[]內(nèi)的值可以不寫
例子:int? a=1;
注意:int a, b;//聲明變量類型,用逗號隔開
????? int a = 4; int a = 5;//錯(cuò)誤
3、常量:只能夠取值,不能重新賦值
???? ??const int f = 5;
?????? f = 7;錯(cuò)誤,不能重新賦值
4、變量名前加關(guān)鍵字(不能賦值,只能取值):const
例子:const? int a=1;
五、基本的類型轉(zhuǎn)換
1、自動轉(zhuǎn)換(隱式轉(zhuǎn)換)--從值類型轉(zhuǎn)換到引用類型時(shí)候
2、強(qiáng)制轉(zhuǎn)換(顯式轉(zhuǎn)換)--從引用類型轉(zhuǎn)換到值類型時(shí)候,或者從浮點(diǎn)型轉(zhuǎn)換到整形
當(dāng)從一個(gè)引用類型轉(zhuǎn)換到值類型時(shí),必須引用類型中的數(shù)據(jù)元素,能夠轉(zhuǎn)換成值類型的容量范圍內(nèi)的數(shù)據(jù)才行,否則不能轉(zhuǎn)。
⑴、用(),注:在被轉(zhuǎn)換的數(shù)據(jù)左邊加上小括號:(要被轉(zhuǎn)換成的數(shù)據(jù)類型);
例子:int a;double b=12.3;a=(int)b;
⑵、用convert;
例子: int a;??? float c;??? double b=12.3;
a=convert.ToInt32(b);
c=convert.Tosingle(b);
⑶、用parse,常用;
例子: int a;? double b=12.3;
a=int.parse(b);
注:int a = 2;
string s = a.ToString();
例子:輸入三個(gè)數(shù),求它們的和、差、積、商。
Console.WriteLine("請輸入a=");
double a = double.Parse(Console.ReadLine());
Console.WriteLine("請輸入b=");
double b = double.Parse(Console.ReadLine());
Console.WriteLine("兩個(gè)數(shù)的和為{0},兩個(gè)數(shù)的差為{1},兩個(gè)數(shù)的乘積為{2},兩個(gè)數(shù)的商為{3}",a+b,a-b,a*b,a/b);
Console.ReadLine();
六、運(yùn)算符
?
| 分類 | 符號 | 解釋 | 優(yōu)先級 |
| ? 算數(shù) | ++? ?-- | 加加? ?減減 | 由高到低,即執(zhí)行順序由上到下.(圓括號的優(yōu)先級最高) |
| */% | 乘 ?除 ?取余 | ||
| + ?- | 加 ?減 | ||
| 關(guān)系 | > ? ?< ???>=? ? ?<= | 大于 小于 大于等于 ? 小于等于 | |
| ==? ???!= | 等于 ?不等于 | ||
| ? 邏輯 | && | 與(并且) | |
| || | 或 | ||
| ! | 非(注:優(yōu)先級在此表的最頂層) | ||
| 條件運(yùn)算符 | ?: | 惟一的一個(gè)三元運(yùn)算符 ?如果 | |
| 賦值 | = ???+= ?-= ? ?*= ???/=? ?%= | 如:x-=4.即x=x-4; |
1、算數(shù)運(yùn)算符:
⑴、+? -
int a = 2; int b = 5;
Console.WriteLine(a+b)
⑵*? /? %?
int a = 10 % 3;
Console.WriteLine(a);
Console.ReadLine();
注意:
●做除法運(yùn)算的時(shí)候,如果兩個(gè)操作都是整數(shù),則運(yùn)算之后的結(jié)果也是整數(shù)。
●做算數(shù)運(yùn)算的時(shí)候,如果兩個(gè)被操作的數(shù)不是同一類型,則會在運(yùn)算的時(shí)候會自動進(jìn)行類型轉(zhuǎn)換。
備注:%? 模?? 取余的用途
●判斷a是不是b的倍數(shù)(是否能夠整除)====>a%b是否==0
●判斷a的個(gè)位是不是b====>a%10是否==b
●把數(shù)變成某個(gè)范圍之內(nèi)的數(shù)(利用余數(shù)一定比除數(shù)小的定理,比如十六進(jìn)制里面最大的單個(gè)數(shù)是F(15))
⑶、++? --
int a =5;
int b= a++;? ====>可以寫成int b =a; a = a+1;
int c = ++a;====>可以寫成a = a+1; int c =a;
運(yùn)算出來的結(jié)果就是
b = 5;
c = 7;
注意:●++? --這兩種運(yùn)算只能應(yīng)用于變量(5++是不對的!!常量也是不可以使用的!!)
●前++和后++的區(qū)別:加加在前,先運(yùn)算再賦值;加加在后,先賦值再運(yùn)算。
int a = 5;
int b = a++;//int b=a;a=a+1;
int c = ++a;//a=a+1;int c=a;
Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(c);
Console.ReadLine();
2、關(guān)系運(yùn)算符:
==? !=? >? <? >=? <=
關(guān)系運(yùn)算符運(yùn)算結(jié)果統(tǒng)統(tǒng)是bool型(結(jié)果不是Ture就是False)
int a = 5;
int b = 6;
Console.WriteLine(a == b);?? ====>False
Console.WriteLine(a != b);?? ====>True
Console.WriteLine(a > b);??? ====>False
Console.WriteLine(a < b);??? ====>True
Console.WriteLine(a >= b);?? ====>False
Console.WriteLine(a <= b);?? ====>True
注意:==??? 不能寫成 =(一個(gè)=是賦值的意思)
3、邏輯運(yùn)算符:
⑴、&&====>兩個(gè)條件都成立,結(jié)果為True,否則False
bool a = 3 > 2 && 3 < 7;//true
⑵、||====>兩個(gè)條件只要有一個(gè)成立,結(jié)果為True,兩個(gè)都不成立為False
bool b = 5 > 3 || 5 > 7;//true
⑶、!====>將原來的結(jié)果取相反的(若本來為True,取反就是False)
bool c = !(5 > 3) || 5 > 7;//false
Console.WriteLine(c);
Console.ReadLine();
4、其他運(yùn)算
= ====>賦值運(yùn)算,將后面的值賦給左側(cè)的變量。(注意:只能是變量)
+=? -=? *=? /=? %=? ====>復(fù)合運(yùn)算符(例:a += b;(意思是a = a +b;))
int a = 6;
a += 7;//a=a+7;
a *= 2;//a=a*2;
a %= 4;//a=a%4;
Console.WriteLine(a);
Console.ReadLine();
5、條件運(yùn)算符:?
例題1:老狼老狼幾點(diǎn)了??? 若是上午出現(xiàn)am,下午出現(xiàn)pm,若是下午,需要報(bào)時(shí)的時(shí)候減去12。
Console.Write("老狼老狼幾點(diǎn)了?");
int time = int.Parse( Console.ReadLine());
string s = time > 12 ? (time-12)+"pm" : time+"am";
Console.WriteLine(s);
Console.ReadLine();
例題2:鍵盤鍵入三個(gè)數(shù),找出來最大的數(shù)。
Console.Write("輸入一個(gè)a值");
double a = double.Parse(Console.ReadLine());
Console.Write("輸入一個(gè)b值");
double b = double.Parse(Console.ReadLine());
Console.Write("輸入一個(gè)c值");
double c = double.Parse(Console.ReadLine());
//double? d =a>b ? a:b;
//double e = d > c ? d : c;
double e = (a > b ? a : b) > c ? (a > b ? a : b) : c;
Console.WriteLine("最大的數(shù)是"+e);
Console.ReadLine();
轉(zhuǎn)載于:https://www.cnblogs.com/H2921306656/p/5597049.html
總結(jié)
- 上一篇: 【HDU 1269】迷宫城堡 (Tarj
- 下一篇: [转]12篇学通C#网络编程——第二篇