前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#-筆記-基礎

C#-筆記-基礎

作者头像
用户9857551
发布2022-06-28 08:32:44
4800
发布2022-06-28 08:32:44
举报
文章被收录于专栏:Angular学习规划

文章目录

快捷鍵及基礎知識

注釋: //單行注釋 /多行注釋/ ///代碼段注釋

/r/n win系統輸出的回車 Ctrl+k+d 快速對齊 Ctrl+k+c 快速注釋 Ctrl+k+u 快速取消注釋

@作用1.取消\在字符串裡的鑽義作用 2.把字符串按照原格式輸出 例子: Console.WriteLine(@“This is the first line. This is the second line.”);

命名規則:

Camel:變量名—小駝峰 Pascal:類名—大駝峰

前提:類型兼容 小轉大:自動轉 大鑽小:強制轉,語法:(待轉換的類型)要轉換的值 如果兩個類型不兼容:可以使用convert轉換工廠進行轉換

代码语言:javascript
复制
String s = "123456";
Double d = Convert.ToDouble(s);//強制轉換變成double類型去進行運算
Double a = 12;
Double k = a + d;
Console.WriteLine("d={0},k={1}",d,a);//佔位符站好位置再寫
Console.ReadKey();

代码是如何工作的?

Console.WriteLine(“Hello World!”);

Console 部分称为“类”。 WriteLine() 部分称为“方法”。 • Console、Write 和 Line 首字母大写 • 使用正确的标点,因为它们在 C# 中扮演特殊角色 在 .NET 编辑器中编写代码,以显示两条消息 Console.WriteLine(@“This is the first line. This is the second line.”);

接受控制台字符轉換計算 //接受用戶的成績並輸出來

代码语言:javascript
复制
    Console.WriteLine("請輸入你的姓名");
    String name = Console.ReadLine();//接受用戶的字段
    Console.WriteLine("語文成績");
    String strChinese = Console.ReadLine();
    Console.WriteLine("數學成績");
    String strMath = Console.ReadLine();
    Double  Chinese = Convert.ToDouble(strChinese);
    Double Math = Convert.ToDouble(strMath);
    Console.WriteLine("姓名是{0}總成績是{1}平均成績是{2:0.00}", name, Chinese + Math, (Chinese + Math)/2); //這裡邊佔位符裡的2:0.00是取兩位小數的意思  

+±-運算符

代码语言:javascript
复制
Int a , b = 2 ,c =3;
Int a = b++ * --c

//輸出4 b++裡邊是2參加運算 --c是2參加運算

Int a = ++b * c— //輸出9 ++b前加參加運算的是3 c—后減參加運算的是3 判斷符號 ||或 &&與,且

代码语言:javascript
复制
/            //閏年判斷
            //可以被400整除
            //可以被4整除但是不能被100整除
            Console.WriteLine("請輸入年份");
            int year = Convert.ToInt32(Console.ReadLine());
            Boolean b = year % 400 == 0 || year % 4 == 0 && year % 100 == 0;
            Console.WriteLine(b);
            Console.ReadKey();

上圖中明顯是&&的優先級大於||所以說一下看不出來,可以加上()進行可以更加直觀。

異常捕捉:

語法正確,其他在運行時候的問題 使用try-catch來提高代碼的健壯性。下邊寫例子。

代码语言:javascript
复制
Console.WriteLine("請寫出一個數字");
            try
            {
                int b = Convert.ToInt32(Console.ReadLine());
                Console.WriteLine(b);
                Console.ReadKey();
            }
            catch {
                Console.WriteLine("輸入的數據有問題");
                Console.ReadKey();
            }

Continue和break的區別

break 语句,它不仅可以跳出“循环体”,还可以跳出 switch。但事实上,break 也只能用于这两种情况。break 语句不能用于循环语句和 switch 语句之外的任何其他语句中。 continue 语句只结束本次循环,而不是终止整个循环。break 语句则是结束整个循环过程,不再判断执行循环的条件是否成立。而且,continue 只能在循环语句中使用,即只能在 for、while 和 do…while 中使用,除此之外 continue 不能在任何语句中使用。

循環

while 循环 当给定条件为真时,重复语句或语句组。它会在执行循环主体之前测试条件。 for/foreach 循环 多次执行一个语句序列,简化管理循环变量的代码。 do…while 循环 除了它是在循环主体结尾测试条件外,其他与 while 语句类似。 嵌套循环 您可以在 while、for 或 do…while 循环内使用一个或多个循环。

程序調試

調試方法:

  1. F11逐句調試(單步調試)
  2. F10逐過程調試
  3. 斷點調試

三元表達式

語法:表達式1?表達式2:表達式3; 表達式1是一個關係表達式 如果表達式1的值是ture 那麼表達式2的值就是整個三元表達式的值 如果表達式1的值是false 那麼表達式3的值就是整個三元表達式的值 注意:表達式2的結果類型必須和表達式3的結果類型一致,並且也要和整個三元表達式的結果類型一致。

代码语言:javascript
复制
    //三元表達式
    Console.WriteLine("請輸入姓名");
    String name = Console.ReadLine();
    String result = name == "老趙" ? "人才" : "啥雕";
    Console.WriteLine(result);
    Console.ReadKey();

創建隨機數

代码语言:javascript
复制
    //創建能產生隨機數的對象
    Random r = new Random();
    //讓產生隨機數的對象調用方法來產生隨機數
    for (int i = 0; i < 10; i++)
    {
        int rNumber = r.Next(1, 10);
        Console.WriteLine(rNumber);
    }
    Console.ReadKey();

常量,枚舉,結構

代码语言:javascript
复制
常量的聲明語法:
//const 變量類型 變量名 = 值;
            //const 變量類型 變量名 = 值;
            const int num = 12;
            num = 21;
Error	1	The left-hand side of an assignment must be a variable, property or indexer	
错误 1 任务的左侧必须是变量、属性或索引器	
常量不能被改變;

枚舉:枚舉,規範了我們的開發,規定了比如說性別,就不讓亂寫(男,man等等這些不同的詞匯) 語法:

代码语言:javascript
复制
[public] enum 枚舉名{值1,值2...}

一般寫在命名空間下邊,就讓所有的類都可以用。當然了還可以寫在類里,main方法外邊;枚舉默認可以與int類型互換,枚舉類型和int類型是兼容的,所有類型都可以轉換成string類型 例子:

代码语言:javascript
复制
namespace test02
{
    public enum Gender
    {
        男,
        女
    }
    class Program
    {
        static void Main(string[] args)
        {
            
            Gender gerder = Gender.男;
            Console.WriteLine(gerder);
            Console.ReadKey();下邊的括號就不寫了

結構:可以幫助我們一次性聲明多個不同類型的變量。同時可以與枚舉合用,比如與上邊的姓別的一塊連用;

代码语言:javascript
复制
[public] struct 結構名{成員變量}
與枚舉一樣放在命名空間裡
    public struct Person {
        public string _name;//一般在下邊放下劃線,以區別是字段不是變量
        public int _age;
        public char _gender;//加上public可以讓下邊方法來調用,不然權限不夠
    }

在方法裡調用

代码语言:javascript
复制
Person zsPerson;
            zsPerson.name = "張三";
            zsPerson.age = 32;
            zsPerson.gender = '男';
            Person lsPerson;
            lsPerson.name = "李四";
            lsPerson.age = 23;
            lsPerson.gender = '女';
            Console.WriteLine(zsPerson.name);
            Console.WriteLine(lsPerson.name);

數組 一次性存儲多個相同類型的變量; 語法:數組類型【】 數組名=new 數組類型【數組長度】; 數組的長度不能改變,要注意數組的界限 計算數組的最大值,最小值

代码语言:javascript
复制
    int[] num = { 1, 2, 3, 4, 5, 54, 7, 8, 9, 45 };
    int max = 0;
    int min = 21;
    for (int i = 0; i < num.Length;i++ )
    {
        if(max < num[i]){
            max = num[i];
        }
        if(min > num[i]){
            min = num[i];
        }
    }
    Console.WriteLine(max);
    Console.WriteLine(min);
    Console.ReadKey();//其實還是有缺陷的因為max,min不一定賦值的時候會出現問題所以給他一個初始值,這個初始值就是最小,int max = int.MinValue;在int範圍裡這個值最小。同理反之:int min = int.MinValue;  

方法

我們在main函數中,調用Test()函數(方法),我們管main()函數稱之為調用者,管Test函數是被調用者。

如果被調用用著者想要得到調用者的值: 1.傳遞參數; 2.使用靜態字段來模擬全局變量; 如果調用者想要獲得被調用者的值: 1.返回值

不管是實參還是形參都是在內存中開闢了空間。

方法的功能要單一 方法中比較忌諱出現用戶提示;一般盡量不出現這種情況。

OUT,ref,params

  • out參數,如果在一個方法中,返回多個相同類型的值的時候,可以考慮返回一個數組。但是如果返回多個不同類型的時候,返回數組就不可以了,用OUT。
代码语言:javascript
复制
在mian方法裡
            Console.WriteLine("輸入賬號");
            string uname = Console.ReadLine();
            Console.WriteLine("輸入密碼");
            string pwd = Console.ReadLine();
            string msg;
            bool b = Test(uname, pwd, out msg);
            Console.WriteLine("登錄結果是{0}",b);
            Console.WriteLine("登錄信息{0}",msg);
                    /// <summary>
        /// 驗證賬號密碼
        /// </summary>
        /// <param name="uname">用戶名</param>
        /// <param name="pwd">密碼</param>
        /// <param name="hh">返回值out語法</param>
        /// <returns>返回值字符串</returns>
        public static bool Test(string uname,string pwd,out string hh) {
            
            if(uname == "admin" && pwd == "admin"){
                hh = "登錄成功";
                return true;
            }
            if (uname == "admin")
            {
                hh = "賬號錯誤";
                return false;
            }
            else {
                hh = "其他錯誤,請從新輸入賬號密碼";
                return false;
            }

        }

ref參數 能夠將一個變量帶入到一個方法中進行改變,改變完成後,再將改變後的值帶出方法,ref參數要求在方法外必須進行賦值,而方法內不能賦值。

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
			int n1 = 10;
            int n2 = 20;
            Test(ref n1,ref n2);
            Console.WriteLine("ni是{0}n2是{1}",n1,n2);
            #endregion
            Console.ReadKey();
代码语言:javascript
复制
 public static void Test(ref int n1,ref int n2) {
            int temp;
            temp = n1;
            n1 = n2;
            n2 = temp;
        }

params關鍵字 將實參列表中與可變參數數組類型一致的元素都當做數組的元素處理。params可變參數必須是形參列表中最後一個元素。

在这里插入图片描述
在这里插入图片描述

意思是將你提供的一係類數據當做一個數組計算。當然了這個數組是不可以變化的。 這是我自己說的不知道對不對。

方法的重載

定義:就是方法的名稱相同方法的參數不同。 1.如果參數個數相同那麼類型就不能相同。 2.如果類型相同參數的個數就不能相同。 方法的重載和返回值沒有關係。

递归

递归分为两种,直接递归和间接递归。 直接递归称为方法自身调用自己。 间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。 注意事项:

递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。 在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。 构造方法,禁止递归

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-11-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 快捷鍵及基礎知識
  • 命名規則:
  • 代码是如何工作的?
  • 異常捕捉:
  • Continue和break的區別
  • 循環
  • 程序調試
  • 三元表達式
  • 創建隨機數
  • 常量,枚舉,結構
  • 方法
  • OUT,ref,params
  • 方法的重載
  • 递归
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档