Hi 歡迎

我是 Wenrong 也是一位 Unity 工程師,從 2015 年 11 月開發到現在,常常會碰到跨平台觸坑問題,因此想寫個 Blog 紀錄填坑歷程。

Effective C# 做法 22-23

做法 22 支援泛型的共變數與反變數 1. 這個 out 也是 共變數? public static bool TryParse (string? s, IFormatProvider? provider, out int result); 方法參數中的 out 關鍵字: 在 TryParse 方法中的 out int result 是一個輸出參數。這個 out 關鍵字...

October 13, 2024 · 4 min

Effective C# 做法 20-21

做法 20 以 IComparable<T> 與 IComparer<T> 實作排序關係 實作 public struct Customer : IComparable<Customer>, IComparable { private readonly string name; private double revenue; public Customer(string name) { this.name = name; } public int CompareTo(Customer other) { return name.CompareTo(other.name); } int IComparable.CompareTo(object? obj) { if (obj is Customer other) { return this.CompareTo(other); } throw new ArgumentException("Argument must be a Customer", nameof(obj)); } public static bool...

October 7, 2024 · 2 min

Effective C# 做法 18-19

做法 18 使用泛型 & 定義最少與足夠的約束 使用泛型 為什麼這三組執行期都共用相同的程式 List<string> strings = new List<string>(); List<Stream> streams=newList<Stream>(); List<MyClassType> myClassTypes=newList<MyClassType>(); JIT 編譯器識別出這些類型都是引用類型,因此可以...

September 28, 2024 · 3 min

Effective C# 做法 16-17

做法 16 絕不在建構元中呼叫虛擬函式 本章節有提到 Static Code Analyzer 工具,可以利用這些工具避免建構子中呼叫虛擬函式。 工具分別有 Visual Studio JetBrains Rider Visual Studio + ReSharper 針對 Unity 的 Static Code Analyzer 只...

September 22, 2024 · 1 min

Effective C# 做法 14-15

做法 14 減少重複的初始化邏輯 1. 建構子初始化程序讓一個建構子呼叫其他的建構子。 public class MyClass { private List<string> coll; private string name; public MyClass() : this(0, string.Empty) { } public MyClass(int count, string name) { coll = new List<string>(count); this.name = name; } } 2....

September 14, 2024 · 1 min