Những thứ có thể bạn chưa biết trong C#

Danh Luu | 3/29/2022 3:37:39 AM

 Mashiro

1. Expression

2. (,) Một kiểu khai báo khá dị:

Khai báo:     

(int, string, float) x = (1, 'Hello", 3.5);

Truy cập:       

x.Item1, x.Item2, x.Item3

 

3. Cách mà Blazor có thể chạy cả Server, Client 1 lúc

Khi tạo project, tích vào hosted, bình thường web khác sẽ sử dụng ajax dể send request, sau đó server trả về, render lại cả trang, nhưng Blazor sử dụn SignalR, chỉ render lại cái đoạn đc thay đổi, sử dụng dom để làm điều đó, 

- WebAssesmbly: Api được lưu ở máy khách luôn, 2 cái chạy cùng 1 server

nôm na là 1 cái vừa giao diện, vừa api, 1 cái thì lấy api từ nơi khác về

Cái Wasm sẽ có nhiều rủi ro hơn so với cái server kia, nhược điểm của nó sẽ là load lần đầu lâu vì nó phải tải api, nhưng đc cái là sau khi load thì chạy ngon, nhanh

Còn cái kia thì ngược lại

 

Câu hỏi thường gặp về Blazor - Github

ASP.NET Core Blazor hosting models

4. Delegate

Delegate (hàm ủy quyền) là một kiểu dữ liệu, nó dùng để tham chiếu (trỏ đến) đến các hàm (phương thức) có tham số kiểu trả về phù hợp với khai báo kiểu

Ví dụ:

using System;

namespace CS008_Anonymous
{
    public class Logs
    {
        // Khai báo một delegate
        public delegate void ShowLog(string message);

        // Phương thức tương đồng với ShowLog (tham số, kiểu trả về)
        static public void Info(string s)
        {
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine(string.Format("Info: {0}", s));
            Console.ResetColor();
        }

        // Phương thức tương đồng với ShowLog (tham số, kiểu trả về)
        static public void Warning(string s)
        {
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine(string.Format("Waring: {0}", s));
            Console.ResetColor();
        }

        public static void TestShowLog()
        {
            ShowLog showLog;

            showLog = Info;         // showLog gán bằng phương thức Info
            showLog("Thông báo");   // Thi hành delegate chính là thi hành Info

            showLog = Warning;      // showLog gán bằng phương thức Warning
            showLog("Thông báo");   // Thi hành delegate chính là thi hành Info
        }
    }
}

 

5. Blazor component

Trong Blazor có 1 khái niệm là EventCallback: T là kiểu trả về

- Khi một phương thức được gọi từ EventCallBack, sau khi phương thức được thực thi, nó sẽ tự động gọi hàm StateHasChange(), nếu trạng thái được thay đổi, nó sẽ render lại 
Khác với cái Delegate Action trong C# (Cái Action này khi state thay đổi thì ko render lại)

Ví dụ, cái multiple of two sử dụng Action, còn cái Multiple of Three dùng EventCallback, thằng Action kia nó ko tự render lại mỗi khi tăng lên 2 đơn vị, nó chỉ đc render lại nhờ việc thằng EventCallback nó tăng lên 3 rồi nó render lại, tiện thể render lại thằng Action lun =))

Thỉnh thoảng method được gọi từ EventCallback là bất đồng bộ (Async), nhưng đôi khi là đồng bộ, trong 2 trường hợp đó thì sử dụng hàm như sau:

//bất Đồng bộ, có Task
public Task SomethingHappenedInChildComponent(string value)
{
  // Do something with value
  return Task.CompletedTask;
}

//Đồng bộ - void
public void SomethingHappenedInChildComponent(string value)
{
  // Do something with value
}

 


Tags:
Web hosting by Somee.com