Tag Archives: series

Series C# hay ho: Giới thiệu Humanizer – Một thư viện khá thú vị của C#

Kì này, series C# hay ho sẽ giới thiệu với bạn một thư viện khá “hay ho”, đúng như tên gọi của series. Thư viện này có tên là Humanizer. Nó chỉ có một chức năng duy nhất: Chuyển string, ngày tháng, … thành chữ mà con người đọc được (Đúng như tên gọi Humanizer tức là “người hóa”). Nghe đơn giản vậy thôi, nhưng bạn sẽ ngạc nhiên trước những chức năng của nó.

Bài viết chỉ mang tính chất showcase, giới thiệu nên sẽ không có code nhiều. Nếu tò mò, các bạn có thể tạo 1 project mới, dùng nuger để cài đặt Humanizer và code thử nhé. Một số tính năng nổi bật của Humanizer

Continue reading Series C# hay ho: Giới thiệu Humanizer – Một thư viện khá thú vị của C#

Series C# hay ho: So sánh 2 object trong C# (Deep compare)

Lâu rồi không viết bài về technical nên phải viết 1 bài cho thiên hạ biết mình vẫn code :D. Ở bài viết này, mình sẽ nói về một chuyện khá đơn giản trong C#: So sánh 2 object. Đây là một vấn đề ai cũng tưởng là dễ, mình sẽ nâng dần vấn đề lên từ đơn giản đến phức tạp. Cách giải quyết cũng sẽ từ đơn giản trở nên phức tạp, sau đó sẽ trở lại đơn giản. Nếu chịu khó đọc bài viết này từ đầu đến cuối, các bạn sẽ ngộ ra nhiều điều, khả năng technical cũng sẽ tăng kha khá đấy.

Are-You-Up-For-The-Challenge

Continue reading Series C# hay ho: So sánh 2 object trong C# (Deep compare)

Series C# hay ho: C# đã tiến hóa như thế nào (Những thay đổi của C# từ 1.0 cho tới 5.0)

Chẳng là gần đây, công ty mình vưa tuyển thêm 1 anh Technical Lead. Đợt mình hỏi ông leader phỏng vấn thế nào, ổng nhận xét “Kiến thức base C# khá vững, nói được những thay đổi của C# từ 1.0 tới 5.0”. Mặc dù mình chỉ là junior dev nhưng mình thấy phần này không khó, do lỡ tìm hiểu rồi nên post bài này chia sẻ cho các bạn luôn. Kiến thức ở bài viết này khá có ích, thích hợp đem đi chém gió, phỏng vấn hoặc hù mem mới.

Lưu ý nhỏ: C# thường được release với .NET. C# là ngôn ngữ lập trình, còn .NET là 1 thư viện/framework (Ta có VB.NET, F#, ASP.NET v…v). Trong phạm vi bài viết, mình chỉ đề cập vê những thay đổi trong bản thân ngôn ngữ C#, không giới thiệu những công nghệ mới qua từng phiên bản .NET như EF, WIF, v…v nhé. Có một số phần mình đã viết rồi, chỉ dẫn link tới bài viết cũ nhé.

Continue reading Series C# hay ho: C# đã tiến hóa như thế nào (Những thay đổi của C# từ 1.0 cho tới 5.0)

Series C# hay ho: LINQ – Lột mặt nạ sự “bá đạo” của LINQ

1. LINQ có thực sự dễ như ta tưởng?

LINQ không phải là 1 khái niệm xa lạ đối với các C#.NET developer, nhất là những bạn hay làm việc với database (LINQ to SQL). Tuy nhiên, đa phần trong chúng ta đều sử dụng LINQ mà không biết rõ nó hoạt động như thế nào. Chắc ai cũng từng viết những dòng code như sau:

 public class Student
 {
    public string Name { get; set; }
    public int Age { get; set; }
 }
var students = new List<Student>();
var result = students.Where(stu => stu.Age < 20);

Dòng code rất dễ hiểu, lọc ra những học sinh có số tuổi < 20. Tuy nhiên, liệu bạn có trả lời được những câu hỏi sau:

  1. Dấu “=>” là dấu gì. Toàn bộ cụm “stu => stu.Age < 20” được gọi là gì?
  2. Hàm Where được viết như thế nào, nhận parameter gì vào, trả ra giá trị gì?
  3. Tại sao IDE tại biết stu là 1 Student để có thể nhắc lệnh?
  4. Có thể viết 1 thứ tương tự như LINQ trong javascript không?

Nếu bạn chỉ trả lời đc 1,2 hoặc không trả lời đc câu hỏi nào, bạn chưa thực sự hiểu LINQ. Đừng lo, ngày xưa mình cũng thế. Bài viết này sẽ giúp bạn giải đáp những câu hỏi trên, cũng như hiểu rõ hơn về LINQ. (Đáp án ở cuối bài viết).
Continue reading Series C# hay ho: LINQ – Lột mặt nạ sự “bá đạo” của LINQ

Series C# hay ho: IEnumerable và yield, tưởng đơn giản mà lắm thứ phải bàn

Khái niệm IEnumerable thì chắc cũng có kha khá người biết, khi ta muốn duyệt tất cả các phần tử trong 1 danh sách, ta thường dùng hàm foreach như sau.

foreach(Student student in students) {}

Các kiểu Collection trong C# như List, ArrayList, Dictionary v…v đều implement interface IEnumerable, do đó ta có thể sử dụng foreach để duyệt.

Continue reading Series C# hay ho: IEnumerable và yield, tưởng đơn giản mà lắm thứ phải bàn

Series C# hay ho: Generic là cái thứ chi chi

Generic là một vị anh hùng thầm lặng trong C#.NET (Dân gian còn gọi là anh hùng núp). Generic 1 trong “5 anh em siêu nhân” cấu thành LINQ (4 người còn lại là: Extension method, Delegate, Lambda Expression và yield). Anh núp trong 50% những dòng code chúng ta viết, đến nỗi chúng ta dùng 1 cách vô thức, không biết đến sự tồn tại hay tên gọi của anh.

pr-2

Mình viết bài này nhằm vinh danh “anh hùng thầm lặng” Generic, cũng như hướng dẫn các bạn cách tạo, sử dụng generic class và generic method.
Continue reading Series C# hay ho: Generic là cái thứ chi chi

Series C# hay ho: Lambda Expression

1. Ôn lại khái niệm Delegate

Các bạn vui lòng đọc lại bài trước để nhớ lại các khái niệm về delegate ở đây: Series C# hay ho: Callback trong C# – Delegate, Action, Predicate, Func

Như đã nói ở bài trước, delegate là kiểu dữ liệu để trỏ tới 1 function, do đó khi gán giá trị cho delegate, ta phải gán 1 function vào, như ví dụ dưới đây:

public delegate void TangQuaDelegate(string qua);

public void tangQua(string qua) {
   Console.Write("Da tang " + qua);
}

//Khi sử dụng:
TangQuaDelegate dlg = tangQua;
//Truyền function vào, không phải thực thi function nên ko có dấu ()

Continue reading Series C# hay ho: Lambda Expression

Series C# hay ho: Callback trong C# – Delegate, Action, Predicate, Func

1. Nhắc lại về khái niệm callback

Nếu chưa có khái niệm rõ ràng về callback, các bạn nên đọc bài viết về Callback trong javascript mà mình đã viết.

Trong javascript, để callback, ta chỉ cần truyền 1 function vào như 1 parameter như sau:


function tangQua(qua) {
   return console.log("Đã tặng " + qua);
}

function oNha(vo, tangQua){
   var qua = "Quà đã nhận";
   tangQua(qua);
}

Continue reading Series C# hay ho: Callback trong C# – Delegate, Action, Predicate, Func

Series C# hay ho: Những điều thú vị trong C# (Phần 2)

Chào mừng các bạn đã quay lại với phần 2 bài viết Những điều thú vị trong C#. Bạn có thể xem lại phần 1 ở đây:

https://toidicodedao.wordpress.com/2015/01/22/series-c-hay-ho-nhung-dieu-thu-vi-trong-c-phan-1/

Series C# hay ho là một series dài kì, giới thiệu những điều “hay ho” của C#. Đây chỉ là phần 2 của bài viết thôi, không phải của toàn bộ series đâu nhé.

Continue reading Series C# hay ho: Những điều thú vị trong C# (Phần 2)

Series C# hay ho: Những điều thú vị trong C# (Phần 1)

Như đã giới thiệu, mình là một lập trình viên C#.NET, do đó C# là ngôn ngữ mình tiếp xúc hằng ngày. Lẽ dĩ nhiên, trong quá trình sử dụng + tìm hiểu, mình nhận thấy có C# có những điều nhỏ nhặt, nhưng lại khá hay ho, cho thấy các cụ Microsoft có suy nghĩ tới developer khi tạo ra ngôn ngữ này.

Nội dung bài viết này là những điều “hay ho” mình đã nói. Những điều “hay ho” (mà ít người biết) này giúp cho việc code được nhanh hơn, code dễ đọc dễ hiểu hơn1. Trong quá trình so sánh, mình có nhắc tới sự thuận tiện khi developer bằng C# so với “các ngôn ngữ khác”. Ở đây cũng giống như so sánh OMO với “bột giặt thường” vậy, không có ý so sánh C# với Java hay PHP của các bạn đâu nhé, các bạn đừng ném đá tội nghiệp =))). Continue reading Series C# hay ho: Những điều thú vị trong C# (Phần 1)