[筆記]C# 命名原則 PascalCase、camelCase、Hungarian notation
命名原則一、小駝峰式命名法 (lower camel case)又稱「camel Case 」。把字首字母改為小寫其他改為大寫,例如 : dataTable、fileName、userDetail。
二、大駝峰式命名法 (upper camel case)又稱「Pascal Case 」。把每一個前面第一個字首字母改為大寫,例如 : DataTable、FileName、UserDetail。
三、匈牙利命名法(Hungarian notation)匈牙利命名法的基本思想是在變數名稱前面添加一個或多個簡稱,這個簡稱表示該變數的數據類型或其他屬性。例如,字串變數可以使用 “str” 的前綴,整數變數可以使用 “i” 的前綴等等。這些前綴使代碼更易於閱讀,因為它們提供了有關變數類型和用途的重要信息。
匈牙利命名法前綴:
str:字串類型
i:整數類型
b:布林類型
f:浮點數類型
o:物件類型
123string strName;int iAge;bool bIsEnabled;
軟體開發中已經不再廣泛使用匈牙利命名法,因為它可能會導致變數名稱變得冗長且容易混淆。取而代之的是,一些 ...
[筆記]C# In 泛型修飾詞
泛型修飾詞泛型修飾詞用於指定泛型類型參數,以便在編譯時使用具體的類型。泛型修飾詞使用尖括號”< >”表示,放置在類型名稱的後面。可以定義一個泛型類型List,其中T是一個類型參數:
1234567891011121314151617public class List<T>{ private T[] items; public List() { items = new T[0]; } public void Add(T item) { // Add item to the list } // Other methods here}
在上面的示例中,T是一個泛型類型參數,可以代表任何類型。當創建List物件時,必須指定T的具體類型,例如:
1234List<int> intList = new List<int>();List<string> stringList = ne ...
[筆記]C# Where 泛型類別條件約束
泛型類別條件約束(generic class constraint)用來指定泛型型別參數的約束條件,限制它必須是特定的型別或符合某些條件。
指定泛型型別參數必須繼承自特定的基底類別或介面
1234public class MyClass<T> where T : MyBaseClass{ // MyClass<T> 的程式碼}
MyClass 泛型類別指定了泛型型別參數 T 必須繼承自 MyBaseClass 基底類別。這樣一來,在定義 MyClass 物件時,T 的型別必須符合這個條件,否則就會編譯錯誤。
指定泛型型別參數必須是值型別或可為空的值型別
12345public class MyClass<T> where T : struct{ // MyClass<T> 的程式碼}
MyClass 泛型類別指定了泛型型別參數 T 必須是值型別或可為空的值型別。這樣一來,在定義 MyClass 物件時,T 的型別必須符合這個條件,否則就會編譯錯誤。
指定泛型型別參數必須有預設的建構 ...
[筆記]C# out、ref關鍵字差異
out 關鍵字out 關鍵字表示該參數是一個輸出參數,方法將為其賦值。使用 out 關鍵字的參數在方法調用之前不需要賦值。在方法內部,out 參數必須賦值,否則編譯器會報錯。以下是使用 out 關鍵字的範例:
12345678void Calculate(int input, out int output){ output = input * 2;}int input = 5;int result;Calculate(input, out result);
上面範例中,Calculate 方法帶有一個 input 參數和一個 out output 參數。Calculate 方法內部賦值了 output 參數,因此可以在方法調用後使用 result 變數來獲取方法的計算結果。
ref 關鍵字ref 關鍵字則表示該參數是一個引用參數,方法可以修改其值並且這些修改也會影響到參數的原始值。使用 ref 關鍵字的參數必須在方法調用之前賦值。以下是使用 ref 關鍵字的範例:
1234567void Increment(ref int value){ va ...
[筆記]C# 實體化與抽象化
實體類別實體類別是具體的類別,可以直接實例化為物件,並對其進行操作。實體類別可以包含屬性、方法、事件等成員,並且可以被其他類別繼承。以下是一個示例:
123456789101112131415161718public class Person{ public string Name { get; set; } public int Age { get; set; } public void SayHello() { Console.WriteLine("Hello, my name is " + Name + " and I am " + Age + " years old."); }}// 實例化一個Person物件Person p = new Person();p.Name = "John";p.Age = 30;// 呼叫方法p.SayHello();
抽象類別抽象類別是一種特 ...
【筆記】ChatGPT API 串接API 心得
前言近期有使用 Line Bot 完成一個小小專案,但是又想告一些花樣就把ChatGPT 加入Line 中,唯一區點就是要注意Token 使用量。
Token 使用量GPT 有很多版本 (光GPT 也不知道他已經多少版本),串接過程其實有聽過 Token 次數,依據每個版本不同 Token 數就會不同。例如 : GPT-3 每一個 Token 為 4 個char 或是 0.75 個字。目前 GPT-3 只有提供最大 4,096 tokens,如果超過就會無法正常使用。
首次使用chatGPT 提供免費 18 美元的費用,這三天玩下去還沒花到 1美元,若直接把他當簡易的搜尋工具他是相當翻遍許多。
GPT API 申請Open API : https://platform.openai.com/
申請方式只需要按下 “Create new secret key” 即可。
Library這邊是已經有提供 Library 可以馬上實現,Line 部分我使用 Betalgo.OpenAI.GPT3製作,製作方式很簡單這邊就不介紹操作。
入口 : https://platform.openai. ...
【筆記】DI依賴注入生命週期
DI 依賴注入(Dependency Injection)DI(Dependency Injection)是一種設計模式,它的主要目的是降低軟體元件之間的耦合度,讓程式更容易測試和維護。DI 透過將類別所需的相依物件,由外部傳入,讓類別不需要知道相依物件的實作細節,只需要知道相依物件所提供的介面(interface),就可以正常運作。
生命週期在 DI 中,相依物件的生命週期通常由 DI 容器來管理。一般來說,每個類別在 DI 容器中都會有一個對應的生命週期。常見的生命週期有以下幾種:
Transient:每次注入都會創建一個新的實例。
Singleton:整個應用程序只會創建一個實例。
Scoped:在同一個作用域中只會創建一個實例。
使用規則使用 DI 時,有幾個重要的使用規則:
盡量避免在程式碼中直接 new 物件,應該使用 DI 容器來管理物件的生命週期。
相依物件的注入應該使用介面(interface)而不是具體類別(concrete class)。
相依物件的注入應該在建構子(constructor)中完成,而不是在類別的方法中完成。
相依物件的注入應該由 DI 容器 ...
【筆記】編程模式Programming Patterns
編程模式(Programming patterns)是一種在軟體工程中使用的解決方案,它可以解決特定的問題,並經過反覆證實可行。這些模式是由軟體工程師在長時間開發軟體中所經驗到的最佳實踐,並且被廣泛使用。使用這些模式可以使代碼更加可讀、可維護和可擴展。
編程模式可以分為三類
創建型模式(Creational patterns)
結構型模式(Structural patterns)
行為型模式(Behavioral patterns)
創建型模式這些模式主要用於將對象的創建與使用分離開來。其中比較常見的模式有工廠模式(Factory pattern)、抽象工廠模式(Abstract Factory pattern)、單例模式(Singleton pattern)、建造者模式(Builder pattern)和原型模式(Prototype pattern)。
結構型模式這些模式主要用於將對象和類結構化,以更好地進行組織和管理。其中比較常見的模式有適配器模式(Adapter pattern)、橋接模式(Bridge pattern)、裝飾模式(Decorator pattern)、外觀模 ...
【旅遊】日本入境 Visit Japan Web (無需使用)
Visit Japan WebVisit Japan Web 是由日本政府推出,可以從上面填寫檢疫、入境、申報等手續。目前有成田國際機場、羽田機場、關西國際機場、中部國際機場、福岡機場、新千歲機場、那霸機場可以使用 Visit Japan Web 檢疫。
網址 : https://vjw-lp.digital.go.jp/en/
一、同行家人Visit Japan Web 功能只能給 嬰兒、無法自行辦理的人使用,若一般使用者還是建議一人為原則申請。
二、三大重點入境前必須要完成以下三大重點才能快速入境,原則上疫苗必須要使用數位疫苗申請。
檢疫手續 (疫苗證明)
入境紀錄
海關申報
三、申請新增入境
檢疫手續申請數位新冠病毒健康證明申請 : 點選我
入境紀錄
海關申報海關申報部分較為簡單,依據選擇做填寫即可。
使用心得到達日本並非只需要看 “檢疫手續(快速通關)” 手續,順序會是 “檢疫手續” > “外國人入境紀錄” > “攜帶品、後送物品申報” 三個項目會按照順序使用,所以到現場使用 “截圖” 還不夠出境。
以下請準備項目、動作
Wifi 請在下飛機打開,並將截圖 ...
【前端】三大前端框架 - 安裝/環境設定
前言近期安排特殊的行程,我會把 React、Vue 、Angular 三大架框玩過一輪,在分析各式的架框使用的方式。我們就直接先從React先下手。本篇教學如何安裝 三大架框環境,後續再針對架構探討。
基本安裝以下我會使用的工具,依據讀者的習慣分配自己的工具。
Node.js (必)
Git
VS Code
安裝環境時,請確認 node 版本在進行下方作業。
1npm -v
一、React官方網連結:[ https://zh-hant.reactjs.org/ ]
1 安裝/創建 React安裝 React 請輸入npx create-react-app [名稱] ,如果有遇到下方錯誤訊息,請參考下方處理方式。
解决npm安装时出现run npm audit fix to fix them, or npm audit for details
安裝完畢後,請移動到指定PATH,指令 :cd [名稱],再來進行npm start開啟網站。
2 結果畫面二、Angular官方網連結:[ https://angular.io/ ]
1 安裝/創建 Angula ...