peri hokiperihokiclarustologisticsrimashaop.compola taktis menang gates of olympus x1000 perihokipemain perihoki bongkar trik jepep starlight princess x1000perihoki beri panduan lengkap bermain mahjong ways 2 pgsofttips cara penghasil uang pgsoft mahjong ways 2 perihokimahjong wins 3 perihoki memberikan penggali terbesarfenomena gates of olympus buka peluang besar bagi duta76cara dapat pola emas rahasia di duta7 wild west goldtrik menang pgsoft mahjong ways 2 modal receh maxwin duta76duta76 main pgsoft mahjong ways 2 di sela istirahatscatter hitam mahjong wins 3 spin pasti jepe duta76perihoki spin mahjong ways 2 pgsoft scatter hitam maxwinsimbol mahjong wins 3 yang sering muncul di awal perihokitrik gampang menang mahjong winscuan mahjong wins 3 tanpa hentipola spin taruhan kecil mahjong winsstrategi kunci scatter hitam beruntungacor total mahjong wayskemenangan maksimal mahjong wayskemenangan pria pekanbaru mahjong waysmahjong wins3 fenomena baru sumatera baratmenangkan mahjong dengan lincahmenembus batas keberuntungan mahjong waysmenjajal keberuntungan di mahjong wayspola gratis mahjong ways1scatter hitam senjata rahasia mahjong winsteknik spinning menguntungkan untuk scatter hitamanalisis rtp tertinggi mahjong winsfenomena scatter hitam mahjong winsibu rumah tangga dan keberuntungan mahjongkeseruan main mahjong wins3menang mahjong pengguna baru di sosial mediamenghargai setiap momen di mahjong waysserunya main mahjong di warung internetspin slow motion mancing scatterstrategi jitu maxwin mahjong waysstrategi jitu menang mahjong modal kecil jackpot besaranak kampung papua menggemparkan mahjongkeajaiban scatter hitam mahjong wayskeberhasilan joni mahjong winskejaiban mahjong ways di ujung jalanketua mahjong wins3 kehadiran kemenangan dimulai dari balimahjong kehadiran yang menguntungkanmahjong menggila adat88panduan kilat raih 108 jutatips memenangkan mahjongbarista kopi menang 110 juta spin mahjongdakota76 scatter hitam mahjong wins 3gagal cpns menang mahjong wins 3 rp120 jutakisah karyawan minimarket dapat thr lebih awal mahjong winskisah pelajar sma kuasai mahjong wins 3 inspirasi sekolahkisah penjaga parkir tanah abang motor baru mahjong winskisah sukses ibu rumah tangga bandung mahjong winsmahasiswa kkn beli iphone15 mahjong wins3 dakotamantan anak band influencer mahjong scatter hitampola rtp senin gates of olympus guru matematikaidola scatter hitam gampang meledakidola sensasi jackpotidola pola scatter hitamidola hasilkan jackpot dalam waktu singkatidola mahjong wins 3 bocortukang cuci motor menemukan keberuntungan di mahjong

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 282

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: session_set_cookie_params(): Cannot change session cookie parameters when headers already sent

Filename: Session/Session.php

Line Number: 294

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 304

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 314

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 315

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 316

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 317

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 375

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: drivers/Session_files_driver.php

Line Number: 108

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: session_set_save_handler(): Cannot change save handler when headers already sent

Filename: Session/Session.php

Line Number: 110

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: session_start(): Cannot start session when headers already sent

Filename: Session/Session.php

Line Number: 143

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

Cách dùng DataSet trong C# [ADO.NET] - Freetuts
ADO.NET
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Cách dùng DataSet trong C# [ADO.NET]

Trong bài viết này chúng ta sẽ tìm hiểu xem DataSet trong C# ADO.NET là gì? các thuộc tính, chức năng và cách sử dụng nó như thế nào. Sau đó là một vài ví dụ cụ thể sử dụng DataSet để các bạn có thể hiểu rõ hơn nhé.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Ở bài trước mình đã giới thiệu về DataTable trong ADO.NET, các bạn có thể xem lại để hiểu rõ cách dùng của nó.

1. DataSet trong C# là gì?

DataSet đại diện cho một tập hợp con của cơ sở dữ liệu trong bộ nhớ. Hay nói cách khác, DataSet là một tập hợp các bảng dữ liệu có chứa dữ liệu quan hệ trong bộ nhớ ở định dạng bảng (table).

Nó không yêu cầu kết nối mở hoặc hoạt động liên tục với cơ sở dữ liệu. DataSet được sử dụng để tìm nạp dữ liệu mà không cần tương tác với bất kì nguồn dữ liệu nào.

Bài viết này được đăng tại [free tuts .net]

*Lưu ý: DataSet là thành phần cốt lõi để cung cấp quyền truy cập dữ liệu trong môi trường phân tán và ngắt két nối (disconnected). Class DataSet thuộc namespace System.Data.

Signature của DataSet trong ADO.NET.

public class DataSet : MarshalByValueComponent, IListSource, IXmlSerializable, ISupportInitializeNotification, ISupportInitialize, ISerializable
{
}

2. Cấu trúc của DataSet trong C#

Trong phần này chúng ta sẽ tìm hiểu về cấu trúc của DataSet trong ADO.NET. Cụ thể thì DataSet cung cấp 4 hàm tạo sau đây.

public DataSet();
public DataSet(string dataSetName);
public DataSet(SerializationInfo info, StreamingContext context);
public DataSet(SerializationInfo info, StreamingContext context, bool ConstrucSchema);

Trong đó:

  • DataSet(): Khởi tạo một instance mới của class System.Data.DataSet.
  • DataSet(string dataSetName): Khởi tạo một instance mới của class System.Data.DataSet với tên đã cho.
  • DataSet(SerializationInfo info, StreamingContext context): Khởi tạo một instance mới của class System.Data.DataSet với thông tin dữ liệu và ngữ cảnh (nguồn và đích của một luồng dữ liệu được tuần tự hóa).
  • DataSet(SerializationInfo info, StreamingContext context, bool ConstructSchema): Khởi tạo một instance mới của class System.Data.DataSet.

3. Các thuộc tính và phương thức của DataSet trong C#

Trong phần này mình sẽ giới thiệu về các thuộc tính và các phương thức của DataSet trong ADO.NET, đây là một phần khá quan trọng vì vậy các bạn hãy chú ý nhé.

Các thuộc tính của DataSet trong ADO.NET.

  • CaseSensitive: Được sử dụng để lấy hoặc đặt một giá trị cho biết liệu các so sánh chuỗi trong các đối tượng System.Data.DataTable có phân biệt chữ hoa hoặc chữ thường hay không. Nó trả về true nếu các so sánh chuỗi là chữ hoa hoặc chữ thường, ngược lại là false (mặc định là false).
  • DefaultViewManager: Được sử dụng để có thể xem được chế độ tùy chỉnh dữ liệu có trong System.Data.Set để cho phép lọc, tìm kiếm và điều hướng bằng cách sử dụng System.Data.DataViewManager tùy chỉnh.
  • DataSetName: Được sử dụng để lấy hoặc đặt trên của System.Data.DataSet hiện tại.
  • EnforceConstraints: Được sử dụng để lấy hoặc đặt một giá trị cho biết liệu các quy tắc ràng buộc có được tuân theo khi thực hiện bất kỳ thao tác cập nhật nào hay không.
  • HasErrors: Được sử dụng để nhận một giá trị cho biết liệu có lỗi trong bất kì đối tượng DataTable nào trong DataSet này hay không.
  • IsInitialized: Được sử dụng để nhận một giá trị cho biết liệu DataSet có được khởi tạo hay không. Nó trả về true để cho biết thành phần đã được khởi tạo, ngược lại là false.
  • Prefix: Được sử dụng để lấy hoặc đặt một tiền tố XML làm bí danh cho namespace System.Data.DataSet.
  • Locale: Được sử dụng để lấy hoặc đặt thông tin ngôn ngữ cho việc so sánh các chuỗi trong bảng.
  • Namespace: Được sử dụng để lấy hoặc đặt tên namespace của System.Data.DataSet.
  • Site: Được sử dụng dể lấy hoặc thiết lập một System.ComponentModel.ISite cho System.Data.DataSet.
  • Relations: Được sử dụng để lấy tập hợp các quan hệ liên kết các bảng và cho phép điều hướng từ bảng mẹ sang bảng con.
  • Tables: Được sử dụng để lấy tập hợp các bảng có trong System.Data.DataSet.

Các phương thức của DataSet trong ADO.NET.

  • BeginInit(): Nó bắt đâu khởi tạo System.Data.DataSet được sử dụng trên một biểu mẫu hoặc được sử dụng bởi một component khác. Quá trình khởi tạo này xảy ra tại thời điểm bắt đầu chạy.
  • Clear(): Xóa DataSet của bất kỳ dữ liệu nào, bằng cách xóa tất cả các hàng trong tất cả các bảng.
  • Clone(): Sao chép cấu trúc của DataSet, bao gồm tất cả các Schema, quan hệ và ràng buộc DataTable. Nhưng ngược lại nó sẽ không sao chép bất kỳ dữ liệu nào.
  • Copy(): Sao chéo cả cấu trúc và dữ liệu của DataSet được chọn.
  • CreateDataReader(): Trả về một DataTableReader với một tập kết quả cho mỗi DataTable, theo trình tự giống như các bảng xuất hiện trong System.Data.DataSet.Tables.
  • CreateDataReader(params DataTable[] dataTables): Trả về một System.Data.DataTableReader với một tập kết quả cho mỗi System.Data.DataTable.
  • EndInit(): Nó kết thúc việc khởi tạo DataSet, được sử dụng trên một biễu mẫu hoặc được sử dụng bởi một component khác.
  • GetXml(): Trả về biểu diễn XML của dữ liệu được lưu trữ trong DataSet.
  • GetXmlSchema(): Trả về Schema XML cho biểu diễn XML của dữ liệu được lưu trữ trong DataSet.

4. So sánh giữa DataReader và DataSet trong C#

Trong phần này mình sẽ đưa ra một vài chức năng của hai class trong C# ADO.NET đó là DataReader và DataSet, để các bạn có thể so sánh và lựa chọn sử dụng trong các trường hợp khác nhau.

Một vài chức năng của DataSet.

  • ​Khi muốn lưu dữ liệu vào bộ nhớ đệm cục bộ trong ứng dụng của mình để bạn có thể thao tác dữ liệu.
  • Khi muốn tương tác động với dữ liệu, tức là ràng buộc dữ liệu với điều khiển winforms.
  • Khi muốn làm việc với architecture bị ngắt kết nối.

Một vài chức năng của DataReader.

  • Nếu muốn thêm một số chức năng khác được đề cập ở trên, thì cần sử dụng DataReader để làm đa dạng ứng dụng.
  • DataReader hoạt động trên architecture kết nối, tức là nó yêu cầu có kết nối mở với cơ sở dữ liệu.

5. Ví dụ sử dụng DataSet trong C#

Trong ví dụ này mình sẽ hướng dẫn cụ thể các bước tạo và sử dụng một DataSet trong C# ADO.NET, các bạn chú ý theo dõi nhé.

Tạo bảng dữ liệu Customer.

// Tạo một bảng Customer
DataTable Customer = new DataTable("Customer");

//Tạo các cột và các schema
DataColumn CustomerId = new DataColumn("ID", typeof(Int32));
Customer.Columns.Add(CustomerId);
DataColumn CustomerName = new DataColumn("Name", typeof(string));
Customer.Columns.Add(CustomerName);
DataColumn CustomerMobile = new DataColumn("Mobile", typeof(string));
Customer.Columns.Add(CustomerMobile);

//Thêm các hàng dữ liệu vào bảng Customer
Customer.Rows.Add(101, "Van Quyen", "118001229");
Customer.Rows.Add(202, "Freetuts.net", "1234567890");

Như các bạn đã thấy, mình đã tạo một DataTable với tên là Customer. Sau đó tạo ba cột dữ liệu và thêm ba cột này vào bảng dữ liệu Customer.

Cuối cùng là tạo hai hàng dữ liệu và thêm hai hàng dữ liệu này vào bảng Customer. Như vậy là chúng ta đã tạo thành công bảng dữ liệu Customer với ba cột và hai hàng dữ liệu

Tạo bảng dữ liệu Orders.

// Tạo bảng Orders
DataTable Orders = new DataTable("Orders");

//Tạo các cột và các schema
DataColumn OrderId = new DataColumn("ID", typeof(Int32));
Orders.Columns.Add(OrderId);
DataColumn CustId = new DataColumn("CustomerId", typeof(Int32));
Orders.Columns.Add(CustId);
DataColumn OrderAmount = new DataColumn("Amount", typeof(Int32));
Orders.Columns.Add(OrderAmount);
                
//Thêm các hàng dữ liệu vào bảng Orders
Orders.Rows.Add(10001, 101, 20000);
Orders.Rows.Add(10002, 102, 30000);

Tương tự như bảng Customer, ở bảng này ta cũng tạo DataTable, sau đó tạo các cột và hàng dữ liệu rồi thêm vào bảng.

Tạo DataSet và DataTable.

 //Tạo DataSet
DataSet dataSet = new DataSet();

//Thêm các DataTables vào DataSet.
dataSet.Tables.Add(Customer);
dataSet.Tables.Add(Orders);

Như đã nói ở phần trên, thì DataSet là một tập hợp các DataTable. Vì vậy ta cần tạo một đối tượng DataSet và sau đó thêm hai bảng dữ liệu (Customer và Orders) vào DataSet.

Đưa dữ liệu vào DataTable từ DataSet.

Để đưa dữ liệu vào DataTable từ DataSet ta có thể sử dụng hai cách. Cách thứ nhất là sử dụng vị trí index để thể thêm vào DataTable và cách thứ hai là sử dụng tên bảng (Name).

Sử dụng vị trí index:

foreach (DataRow row in dataSet.Tables[0].Rows)
{
      Console.WriteLine(row["ID"] + ",  " + row["Name"] + ",  " + row["Mobile"]);
}

Vì lần đầu tiên ta thêm bảng Customer vào DataSet nên vị trí index của nó bằng 0. Nếu muốn lặp lại dữ liệu bảng khách hàng thì có thể sử dụng vòng lặp foreach để lặp lại.

Sử dụng tên bảng:

foreach (DataRow row in dataSet.Tables["Orders"].Rows)
{
      Console.WriteLine(row["ID"] + ",  " + row["CustomerId"] + ",  " + row["Amount"]);
}

Ngoài cách sử dụng vị trí index như trên, ta còn có thể sử dụng tên của bảng để thêm dữ liệu vào bằng cách sử dụng vòng lặp foreach.

Full Code.

using System;
using System.Data;

namespace ConsoleApp4
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                //tạo mới một bảng có tên Customer
                DataTable Customer = new DataTable("Customer");
                //tạo các cột và các schema của bảng
                DataColumn CustomerId = new DataColumn("ID", typeof(Int32));
                Customer.Columns.Add(CustomerId);
                DataColumn CustomerName = new DataColumn("Name", typeof(string));
                Customer.Columns.Add(CustomerName);
                DataColumn CustomerMobile = new DataColumn("Mobile", typeof(string));
                Customer.Columns.Add(CustomerMobile);
                //thêm các hàng dữ liệu vào bảng Customer
                Customer.Rows.Add(101, "Van Quyen", "118001229");
                Customer.Rows.Add(202, "Freetuts.net", "1234567890");

                //tạo mới một bảng Orders
                DataTable Orders = new DataTable("Orders");
                //tạo các cột vầ các schema của bảng
                DataColumn OrderId = new DataColumn("ID", typeof(Int32));
                Orders.Columns.Add(OrderId);
                DataColumn CustId = new DataColumn("CustomerId", typeof(Int32));
                Orders.Columns.Add(CustId);
                DataColumn OrderAmount = new DataColumn("Amount", typeof(Int32));
                Orders.Columns.Add(OrderAmount);

                //thêm các hàng dữ liệu vào bảng Orders
                Orders.Rows.Add(10001, 101, 20000);
                Orders.Rows.Add(10002, 102, 30000);

                //tạo mới một instance DataSet
                DataSet dataSet = new DataSet();
                //thêm các datatable vào dataset
                dataSet.Tables.Add(Customer);
                dataSet.Tables.Add(Orders);

                Console.WriteLine("Du lieu trong bang Customer: ");
                //sử dụng vòng lặp foreach để thêm dữ liệu vào datatable bằng vị trí index
                foreach (DataRow row in dataSet.Tables[0].Rows)
                {
                    Console.WriteLine(row["ID"] + ",  " + row["Name"] + ",  " + row["Mobile"]);
                }
                Console.WriteLine();

                Console.WriteLine("Du lieu trong bang Orders: ");
                //sử dụng vòng lặp foreach để thêm dữ liệu vào datatable bằng tên bảng
                foreach (DataRow row in dataSet.Tables["Orders"].Rows)
                {
                    Console.WriteLine(row["ID"] + ",  " + row["CustomerId"] + ",  " + row["Amount"]);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Co loi xay ra.\n" + e);
            }
            Console.ReadKey();
        }
    }
}

Kết quả:

bai9 01 png

Như vậy là chúng ta đã tìm hiểu xong về DataSet trong C# ADO.NET là gì? các thuộc tính, phương thức và cách sử dụng nó. Ở bài tiếp theo mình sẽ tiếp tục hướng dẫn cách thao tác với SQL bằng DataSet, các bạn nhớ chú ý theo dõi nhé !!!

Cùng chuyên mục:

Memento Design Pattern trong C# - Cách triển khai và ví dụ

Memento Design Pattern trong C# - Cách triển khai và ví dụ

Interpreter Design Pattern trong C# - Cách triển khai và ví dụ

Interpreter Design Pattern trong C# - Cách triển khai và ví dụ

Strategy Design Pattern trong C# - Cách triển khai và ví dụ

Strategy Design Pattern trong C# - Cách triển khai và ví dụ

Visitor Design Pattern trong C# - Cách triển khai và ví dụ

Visitor Design Pattern trong C# - Cách triển khai và ví dụ

Command Design Pattern trong C# - Cách triển khai và ví dụ

Command Design Pattern trong C# - Cách triển khai và ví dụ

Observer Design Pattern trong C# - Cách triển khai và ví dụ

Observer Design Pattern trong C# - Cách triển khai và ví dụ

Iterator Design Pattern trong C# - Cách triển khai và ví dụ

Iterator Design Pattern trong C# - Cách triển khai và ví dụ

Proxy Design Pattern trong C# - Cách triển khai và ví dụ

Proxy Design Pattern trong C# - Cách triển khai và ví dụ

Composite Design Pattern trong C# - Cách triển khai và ví dụ

Composite Design Pattern trong C# - Cách triển khai và ví dụ

Bridge Design Pattern trong C# - Cách triển khai và ví dụ

Bridge Design Pattern trong C# - Cách triển khai và ví dụ

Decorator Design Pattern trong C# - Cách triển khai và ví dụ

Decorator Design Pattern trong C# - Cách triển khai và ví dụ

Facade Design Pattern trong C# - Cách triển khai và ví dụ

Facade Design Pattern trong C# - Cách triển khai và ví dụ

Adapter Design Pattern trong C# - Cách triển khai và ví dụ

Adapter Design Pattern trong C# - Cách triển khai và ví dụ

Singleton Design Pattern trong C# - Cách triển khai và ví dụ

Singleton Design Pattern trong C# - Cách triển khai và ví dụ

Prototype Design Pattern trong C# - Cách triển khai và ví dụ

Prototype Design Pattern trong C# - Cách triển khai và ví dụ

Builder Design Pattern trong C# - Cách triển khai và ví dụ

Builder Design Pattern trong C# - Cách triển khai và ví dụ

Tự viết ứng dụng quản lý xe ra vào C# Winforms và Firebase

Tự viết ứng dụng quản lý xe ra vào C# Winforms và Firebase

Trong bài viết này Freetuts chia sẽ cho các bạn một ứng dụng khá thú…

Factory Design Pattern trong C# - Cách triển khai và ví dụ

Factory Design Pattern trong C# - Cách triển khai và ví dụ

Chúng ta sẽ tìm hiểu về Factory Design Pattern trong C# là gì? Cách triển…

Hướng dẫn giải phương trình bậc hai trong C#

Hướng dẫn giải phương trình bậc hai trong C#

Giải phương trình bậc nhất ax + b = 0 trong C#

Giải phương trình bậc nhất ax + b = 0 trong C#

Top