發表文章

目前顯示的是 1月, 2019的文章

c# out 輸出參數修飾子 example

    class Program     {         static void Main(string[] args)         {            //1.傳值 2.傳址 3.輸出參數 4.陣列參數            //out 3.輸出參數            //1.傳回多個值            //2.呼叫的地方和被呼叫的方法都要加上out關鍵字            //3.在含有out關鍵字參數的方法裡面,一定要將所有的out參數賦予值             int i = 4;             int j = 2;             int sum;             int multiple;             int division;             int subtraction;             para(i, j, out sum, out multiple, out division, out subtraction);             Console.WriteLine(sum);         ...

switch multi case

最近才知道switch可以用在多個case string name="zoe"; switch(name) {    case "zoe":    case "Rose":    case "Sue": Console.WriteLine("hello " + name ); break;   }

XML Comment

https://docs.microsoft.com/zh-tw/dotnet/csharp/codedoc

陣列 Array

陣列為一個同資料型態的集合,由0開始。 像是字串/整數 string[] strArr={"a","b"}; int[] intArr= new int[2]; 優點: 整個陣列都是為同一型態,當指定錯誤的型態會不能編譯。 缺點: 陣列的大小在初始化過後無法擴張,           而且只能用索引來設置與取得陣列中的值 如strArr[1]           可能會導致索引超過拋出錯誤的現象(寫for迴圈沒設定好超過)

out c# 多個參數

out是將記憶體位置傳過去, 看到以下例子,我們可以發現我們在main方法裡面,並沒有指派 i和j的值,但是呼叫了ccc方法,把i和j的變數在記憶體存放的位置傳過去,該方法把該記憶體位置存放改成rr和ee ,所以當我們print時,發現可以得到值   class Program     {         static void Main(string[] args)         {             string i,j;             ccc(out i,out j);             Console.WriteLine(j);  //輸出rr             Console.WriteLine(i);  //輸出ee                       Console.ReadLine();         }         public static void ccc(out string i,out string j){             i = "rr";             j = "ee";         }     }

Parse 和 TryParse 用法與區別

現實中拿到的幾乎都是字串,所以如何將字串拿來使用和運算等,就需要靠Parse。             string strNum1 = "11";             string strNum2 = "22";             int sum = strNum1 + strNum2; //我們想把兩個數字相加,但兩者都是字串不能加  經過Parse調整就可以了!!!!!!!!!             string strNum1 = "11";             string strNum2 = "22";             int sum =int.Parse(strNum1) + int.Parse(strNum2);             Console.WriteLine(sum); //得到33 其他像是DateTime/double/float/short/ushort等等,都能夠用Parse!!!!!!!!!!!!超好用!! ___________________________________________________________________________ 至於tryParse的出現,就是因為可能有人會亂輸入值,例如給你             string strNum1 = " 11bbbb ";             string strNum2 = "22";             int sum =int.Parse(strNum1) + int.Pa...

Cast 和 Convert 的區別 c#

1. Cast是指同類型的轉換,例如數字類型互相轉換,int ->double 分為兩種 1.implicit  : 從小轉成大 我們都知道int為32bit,而double為64bit,如果把int轉乘double,則沒有影響,因為double可以存int不會失去掉任何東西          int major = 5;          double i = major; 2.explicit  :  從大轉成小 如果相反從double要轉成int,這時候就會發生漏失資訊的事情           double major = 5.55; int i = major; //會提示說不能implicit轉換,只能用explicit轉換 因為會漏失資訊,上面的例子會把.55給遺失掉,只會得到5 如果是在需要比較精密的系統,財務系統之類的,漏掉這.55可能就不得了了 所以會提示要你自己來轉換,讓你自己知道這會造成遺漏 至於要如何explicit轉換呢? 請在要轉換的數字前面加上 括號裡面放要轉的型態   (int) 延續上面的例子 double major = 5.55; int i = (int)major; 以上就不會報錯了 ___________________________________________________________ 2.Convert則為不同類型的轉換,例如把int轉換成string,其實也能支持同類型的轉換 如int轉成double,只支援小->大 如果你寫 int i =1; string s = (string) i; //這時候會報錯 會提示不能夠把int轉換成string 不能像上面一樣強制轉換 double變int 這時候就需要用到Convert類別 他裡面有很多方法,可以進行各種轉換 int i = 1; string s = Convert.ToString(i);  //成功!~~~(灑花) 我們可以發現flo...

Nullable types / Null Coalescing Operator

在c#分為兩種型態 1.Value  ex:int     預設為0 2.Reference  ex:string  預設為null 但有時候Value也需要設置為null,因為在資料庫中設任何的型態,都可以為null 那如何將value type設置為null呢 答案: 在型態後加一個問號  int? i = null; 以下的areYouMajor的bool被弄成bool?型態,所以他除了true/false外,還多了一個null的可能 class Program     {         static void Main(string[] args)         {             bool? areYouMajor = null;             if (areYouMajor == true)             {                 Console.WriteLine("t");             }             else if (areYouMajor == false)             {                 Console.WriteLine("f");             }             else ...

C#運算子 || && ?:

1.&& || 短路運算子 if(a= = 1 || b= =2) { //如果a= =1成立就會執行,不會再去判斷b = =2 } if(a= = 1 && b= =2) { //如果a= =1不成立就不會執行,不會再去判斷b = =2 } 2.當A||B A條件成立就不會再判斷B 3. ?:  運算子 在問號前的條件成立的話 就是得到冒號左邊的結果,反之則右邊的結果 int i=5; bool equal = i==5 ? true : false;  int i = 1;             int tt=i == 1 ? 1 : 0;             Console.WriteLine(tt);             Console.ReadLine(); ?:可以在右邊設置各種型態   int i = 1;             string tt=i == 1 ? "1" : "0";             Console.WriteLine(tt);             Console.ReadLine();

escape sentence and VerBatim literal

當字串中包含一些已有特殊意義的符號時,例如雙引號,雙引號已經被定義為刮在字串旁邊 ,若你在雙引號裡面又加了",但你又想讓它呈現出來,像是你想顯示"hello world", 你可以有兩種選擇 1.escape sequence逃脫字元 string str ="\"hello word\""; 如果寫 string ""hello world""會報錯,所以用\符號來逃脫 以下是官方的文件 https://docs.microsoft.com/en-us/cpp/c-language/escape-sequences?view=vs-2017 2.VerBatim literal 其實第一種方法可用,但可讀性比較不好,第二種方法是在字串前面加上@符號 這樣compiler就會把這串當成都是一般的字沒特殊含義! 但雙引號比較特殊,在這用法還是得用兩個雙引號   string s = @"""hello world"""; 請參考:https://stackoverflow.com/questions/17168961/how-do-i-escape-in-verbatim-string

c# 整數 浮點數

1.整數: 以下可包含數字從小大到,看你用到的數字大小來指派,例如人類的身高  byte(0-255)就可以 用類型.MinValue(MaxValue)可以看出該型態最大最小極限,例如int.MaxValue sbyte      8    - byte       8    + char     16    unicode char short    16    - ushort  16   + int        32    - uint      32    + long     64     - ulong   64    + 2.浮點數型態: (存小數)           精準度 float       7 bit        +- double    15-16bit  +-

關於命名空間 namespace

NameSpace is collection of classes. A namespace is used to organize your code and it collection of classes,interface, structs,enums and delegate. 同一個命名空間的類別之間,不用using可以互相呼叫。 若呼叫不同命名空間的類別,則需要用using關鍵字,或者直接寫全名。 1.  Using System;  Console.Write("test"); 2. System.Console.Write("test") 若沒有命名空間則在同一專案內可以隨意呼叫,但這樣的缺點是如果專案很大,類別很多,要用的時候就會提示很多東西出來,還要挑選,而且不能有同樣名稱的類別,一個命名空間的類別名是不能夠重複的。 如要就是要分兩個命名空間,就像是兩間不同的公司可以有兩個人相同的工號