那些年,我們一起瘋狂的C#語言------總結
望大家認真看看哦,有驚喜哦!!!
第一章 第一個C#程序
大概在2000年,微軟推出了一種革命性的產品--.NET
目標:任何人,在任何地方,使用任何終端設備,都可以訪問微軟提供的服務。
.net Framework:要想讓我們自己寫的C#應用可以運行在Good Friend的Computer上,必須有.net Framework
IDE(Itergrated Developer Environment)集成開發環境Linux:裝XWindow:傻X
解析:,net是一種平台,這種平台上可以跑多種語言,例如,vb,j#,C#c#只是一種語言
第一個C#程序
1. 使用vs創建C#程序的步驟:
新建項目(project)→生成可執行文件(build)→運行(run)
2.解決方案資源管理器:包括解決方案名稱、項目名稱、編譯後的
可執行文件和源文件(以.cs為擴展名)等。
3.程序結構:命名空間中包含類,類中包含Main方法
4.C#的main方法
注意點:Main方法首字母大寫
返回值可以為void或者int
命令行參數是可選的
四種Main()方法:
static void Main(){}
static void Main(){string[] args}
static int Main(){}
static int Main(){string[] args}
5.C#中變量
c#中常用數據類型:整型 int,浮點型float,字符串string
布爾型bool
語法:數據類型變量名稱;
c#中變量的命名規則有哪些?
1,組成:英文字母、數字、“_”
2,開頭:英文字母、“_”
3,不能使用關鍵字;
6.C#中的常量
什麼是常量
變量:可以變化的量。
Int num=5;
Num=7;
常量;一旦定義,其值不能再後續代碼中再次修改。
解析:PI
Int num=5;
05.海量代碼折疊
快捷鍵是Ctrl+K+S:#region
const 數據類型常量名稱=值;
注意點:常量不能被重新賦值
常量命名規則:01,有意義02,均大寫03,長度宜長
什麼時候使用常量:01,多處用到02,其值不易理解03,其值不變
7.輸入輸出
向控制台輸出:
Console.WriteLine()方法--輸出後換行
Console.Write()方法--輸出後不換行
Console.WriteLine("格式字符串",變量列表);
例如:Console.WriteLine("我的課程名稱是:{0}",course);
{0}:占位符
依次使用{0}、{1}、{2}與變量列表中的變量對應
可以在字符中使用\n、\t來控制換行或制表
從控制台讀入:
Console.ReadLine();
返回值為string類型
c#中的方法
方法是類的行為,便於修改、增加可讀性、可重用、封裝等。
C#中方法的定義形式:
訪問修飾符返回類型方法名(參數列表)
{
//方法的主體
}
訪問修飾符:如public、private等。
返回類型:如int ,double ,string,void等。
方法名:命名規范:單詞首字母大寫--Pascal命名法
類和對象
類可以生成對象,類是對象的抽象
成員變量也叫字段
c#中的注釋
單行注釋://
多行注釋:/**/
文檔注釋:/**
*/
C#中的region
如何讓自己的海量代碼更可讀?
region可以使代碼折疊
VS中調試技巧
斷點:通知調試器應在某點上中段應用程序並暫停執行
監視窗口:計算變量和表達式的值
調試常用快捷鍵
F5--開始調試
Shift+F5--停止調試
F9--設置或刪除斷點
F10--逐過程調試
F11--逐語句
第2章 c#語法快速熱身
c#與java的switch語句用法有什麼不同?
01.java中switch後的表達式取值只能為(int/char),
但是c#中取值可以是(int/char/string)
02.java中case後可以沒有break語句,但是在c#則不行
java中如何定義數組?
int[] nums=new int[]{1,2,3};
c#中if條件結構
C#與java中的條件判斷語句對比
條件判斷語句 java c#
if if(){...}二者完全相同
if...else... 二者完全相同
注意:java和c#中switch用法有以下兩點不同:
01.java中switch後的表達式取值只能為(int/char),
但是c#中取值可以是(int/char/string)
02.java中case後可以沒有break語句,但是在c#則不行
多個可以case 可以共用break語句
c#中switch小結
條件判斷的表達式類型:整型、字符型或字符串
break語句的要求:
01,每個case都要有break
02,default也要有break
03,特殊情況:case中沒有其他語句時,不需要break語句
c#中的一維數組
01.C#中數組定義語法:
數據類型[] 數組名;
string[] arr1;
02.如何設置數組大小?
使用new設置大小:創建長度為5的整型數組
int[] array=new int[5];
03.數組初始化:
int[ ] arr = new int[5]{0,1,2,3,4};
int[ ] arr = new int[ ]{0,1,2,3,4}; // 省略長度
int[ ] arr = {0,1,2,3,4}; // 省略new
[5]——方括號中的數字決定數組的長度
{0,1,2,3,4}——大括號中的元素個數決定數組的長度
04.如何獲取數組的長度(數組中元素的個數)
答:數組名.Length
05.如何循環輸出數組中元素?
// 循環輸出數組元素
int[ ] array = new int[5] { 0, 1 ,2, 3, 4}; // 聲明並初始化一維數組
考題:
//在C#中和java中如下語句都可以定義一個長度為3的int類型數組
方式一:
int[] arr=new int[]{1,2,3};
方式二:
int[] arr;
arr=new int[]{1,2,3};
//int[] arr=new int[3]{1,2,3;//C#中正確,java中不可以
foreach局限性:當需要改變數組中值的時候會報錯
for (int i = 0; i < array.Length;i++ ) // 輸出數組中的所有元素
{
Console.WriteLine(array[i]);
}
06.使用foreach循環遍歷數組元素
foreach循環一般用於遍歷整個集合或數組
語法:foreach (元素類型變量名 in 集合或者數組名)
{
// 語句
}
07.continue和break語句的使用
continue:結束本次循環,繼續下一次循環
break:結束當前循環
08.二重循環復習
int i, j; // 循環變量
// 外層循環控制打印的行數
for (i = 1; i <= 5; i++)
{
// 內層循環控制每行打印數字的個數
for (j = 1; j <= i; j++)
{
Console.Write(j);
}
Console.WriteLine();
}
冒泡排序
規則:每次比較相鄰兩數,小的交換到前面,每輪節航速後最大的數交換到最後
用二重循環實現冒泡排序
例如:5(n)個數字存放在一維數組中,如何進行排序
分析:外層循環控制比較多少輪,循環變量i
內層循環控制每輪比較多少次,循環變量j
觀察規律,分析i和j的關系,最終得出結論
i=n-1,j=n-1-i
代碼框架如下:
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
//比較j和j+1位置的元素
//如果前大後小就交換
}
}
int[] nums = { 10, 5, 8, 9, 50 };
Console.WriteLine("排序前:");
foreach (int item in nums)
{
Console.Write(item+"\t");
}
Console.WriteLine("");
//01.核心排序代碼
for (int i = 0; i <4; i++)
{
for (int j = 0; j <4-i; j++)
{
if (nums[j]>nums[j+1])
{
int temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
}
}
}
Console.WriteLine("排序後:");
foreach (int item in nums)
{
Console.Write(item + "\t");
}
Console.WriteLine("");
Console.ReadKey();
}
}
冒泡排序速記口訣(升序): N個數字來排隊
兩兩相比小靠前
外層循環N-1
內層循環N-1-i
第三章 使用屬性升級MyBank
訪問修飾符
public:在任何位置都可以訪問
private:只能在當前類中訪問
C#中的訪問修飾符
當類的某些敏感字段只希望類內部使用時,可以使用private訪問
一個類的字段一旦定義成private,其他類訪問不到
c#中的訪問修飾符:
public 不受任何限制,訪問級別最高
private 只有類的內部可以使用,訪問級別最低
public class Panda{
private string brand;
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
public string Brand
{get { return brand; }
set { brand = value; }
}
屬性
屬性作用:修改和獲取私有字段的值(間接對私有字段賦值,起到保護私有字段的作用)
屬性語法
public class Person
{
private int age;
public int Age
{
//get get{return age;}
//set set{age=value;}
}}
面向對象三大特性:
01.封裝
//可以將私有字段封裝成屬性,看成是一種封裝(屬性封裝了字段)
//可以將一個方法寫到類中這種方式成為封裝(類封裝了方法)
02.繼承
03.多態
this關鍵字的作用
c#中this關鍵字有什麼用?
this代表的是當前類的實例,通過this可以訪問當前類的對象的所有
成員變量和方法
public void SetAge(int age)
{
if (age>0&&age<=20)
{
this.age = age;
}
else
{
this.age = 2;
}
}
public int GetAge()
{
return this.age;
}
數據安全
static void Main(string[] args)
{
Student stu = new Student();
stu._age = -2;//非法數據
stu. _idCard = "123456"; //身份證號不能被修改
}
有時候將類中的字段公開是不安全的,但是如果設為私有成員:
無法正常賦值,無法獲得數據。
使用方法解決數據安全問題
1, 使用者不可直接操作_age
2,
3, 用方法返回_age供讀取
4, 用方法限制使用者的非法賦值
private int _age;
public int 方法1()
{
return this._age;
}
public void 方法2(int 參數)
{
if(參數<0||參數>100)
{
this._age=18;
}
else
{
this._age=參數;
}
}
這種寫法太麻煩,於是誕生了屬性
class Student
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}
value相當於方法的參數,字段和屬性的數據類型必須一致。
get用於獲取相應字段的值,
set用於設置字段的值。
get和set都存在,讀寫屬性。只有get時,只讀屬性。只有set時,只寫屬性。
屬性的作用:控制私有字段的可訪問性,保護內部數據的安全。
建議:類內部敏感字段使用屬性來控制訪問
快速書寫屬性的方法:用ctrl+R+E
類的成員:字段、屬性和方法
屬性是不能用來存儲對數據的,真正的數據是存儲在字段中的。
參數的傳遞方式
參數傳遞有兩種方式:值傳遞和引用類型傳遞
注意:值傳遞不能保留參數的修改,要按引用傳遞,使用ref
通過引用傳遞參數:
1. 定義和調用時,在參數前都要使用ref
2. 在方法調用前:作為參數的變量要聲明並賦值
使用場景:希望保留參數的更改。
我挺辛苦的,