跳過到頁腳內容
.NET幫助

C# 類型(開發者的工作原理)

在任何程式語言中,理解資料類型至關重要,C# 也不例外。 無論是int類型還是浮點類型,每種類型都持有特定類型的信息,也被稱為實際數據。

C#的基礎

C# 是一種強類型語言。 那麼,強類型語言意味著什麼呢? 這意味著每個變數和對象都必須有一個已聲明的資料類型。 而正是資料類型決定了您可以在該變數中存儲什麼樣的數據。

C# 有兩種主要的資料類型:值類型和引用類型。這些也是您可能聽到的用戶自定義類型。

C#中的值類型

在 C# 中,值類型很簡單。 當您聲明一個值類型變數時,實際存儲的數據就是您賦予該變數的值。 如果您更改一個變數的值,則不會影響任何其他變數。

C# 中最常見的值類型包括:

  • 整數(由int類型表示)
  • 浮點數(由floatdouble類型表示)
  • 布林值,為 true 或 false

首先談談int類型。在 C# 中,int類型是一個 32 位的數據類型,可以存儲從 -2,147,483,648 到 2,147,483,647 的整數。以下是一個例子:

int myInteger = 15;
int myInteger = 15;
Dim myInteger As Integer = 15
$vbLabelText   $csharpLabel

現在,進入浮點類型。 在 C# 中,有兩種浮點數類型:floatdouble

float類型是一個具有最多 7 位精度的 32 位浮點數。 這對於科學計算非常適合。 可以這樣聲明一個float類型變數:

float myFloat = 12.34F;
float myFloat = 12.34F;
Dim myFloat As Single = 12.34F
$vbLabelText   $csharpLabel

double類型是一個具有最多 15-16 位精度的 64 位浮點類型。 它比float類型更精確,通常用於財務和貨幣計算。 這是一個double類型變數的例子:

double myDouble = 12.3456789;
double myDouble = 12.3456789;
Dim myDouble As Double = 12.3456789
$vbLabelText   $csharpLabel

C#中的預定義資料類型

好的,繼續。 C# 提供了幾個可以在應用程序中使用的“預定義的資料類型”。 這些是用於定義自定義“用戶自定義類型”的基本構建塊。

以下是一些例子:

  • byte:這是一個 8 位無符號整數,範圍從 0 到 255。
  • char:這是一個 16 位的 Unicode 字符。
  • decimal:由於其高精度,適合財務和貨幣計算。
  • bool:存儲 truefalse,非常適合邏輯運算。

每個這些“預定義資料類型”都有其自身的用途和“默認值”,因此選擇合適的類型對於您的需求來說非常重要!

C#中的默認值

在 C# 中,每個資料類型都有一個默認值。 對於值類型變數,如果您不初始化它們,它們會自動取其默認值。

例如,int類型的默認值是 0,浮點值類型(floatdouble)的默認值是 0.0。

引用類型的默認值是null,表示它不指向任何對象。

C#中的類型轉換

有時,您可能需要將一種資料類型轉換為另一種。 這被稱為類型轉換,C# 支持兩種轉換:隱式轉換和顯式轉換。

隱式轉換會在您將一種類型的值分配給可容納更大值的兼容類型的變數時自動發生。 例如,您可以將int類型分配給double類型而不丟失信息。

int myInt = 10;
double myDouble = myInt; // Implicit conversion
int myInt = 10;
double myDouble = myInt; // Implicit conversion
Dim myInt As Integer = 10
Dim myDouble As Double = myInt ' Implicit conversion
$vbLabelText   $csharpLabel

顯式轉換,也稱為強制轉換,是在嘗試在不兼容的類型之間進行轉換時所需的,比如從較大的類型轉換為較小的類型。 這可以通過在要轉換的值前放置括號中的目標類型來完成。

double myDouble = 10.5; 
int myInt = (int)myDouble; // Explicit conversion, decimal part is lost
double myDouble = 10.5; 
int myInt = (int)myDouble; // Explicit conversion, decimal part is lost
Imports System

Dim myDouble As Double = 10.5
Dim myInt As Integer = CInt(Math.Truncate(myDouble)) ' Explicit conversion, decimal part is lost
$vbLabelText   $csharpLabel

C#中的引用類型

C# 中的引用類型與值類型的工作方式略有不同。引用類型變數不是存儲實際數據,而是存儲數值所在位置的地址。 換句話說,它“引用”了內存中的另一個位置。

因此,如果您更改引用類型對象,也會影響其他變數。 這是因為引用類型變數會自動反映更改後實際數據在其指向的內存地址的變化。

現在,這可能聽起來有點複雜,但讓我們用一個例子來分解。 假設我們有一個名為Person的類:

class Person
{
    public string Name { get; set; }
}
class Person
{
    public string Name { get; set; }
}
Friend Class Person
	Public Property Name() As String
End Class
$vbLabelText   $csharpLabel

然後我們創建了該類的兩個“引用類型”變數:

Person person1 = new Person { Name = "Alice" };
Person person2 = person1;
Person person1 = new Person { Name = "Alice" };
Person person2 = person1;
Dim person1 As New Person With {.Name = "Alice"}
Dim person2 As Person = person1
$vbLabelText   $csharpLabel

此時,person1person2 都指向相同的內存位置。 如果我們更改person1person2 也會反映這一變化:

person1.Name = "Bob"; 
Console.WriteLine(person2.Name); // Outputs "Bob"
person1.Name = "Bob"; 
Console.WriteLine(person2.Name); // Outputs "Bob"
person1.Name = "Bob"
Console.WriteLine(person2.Name) ' Outputs "Bob"
$vbLabelText   $csharpLabel

C#中的數組

數組是一種引用類型,能夠保存多個相同資料類型的值。 它就像是一個容器,您可以在其中存儲一系列相同類型的值。

要聲明一個數組,首先需要指定其元素的資料類型,然後使用方括號。 然後您使用new 關鍵字創建數組並指定其長度。

int[] myIntArray = new int[5]; // Array of int type, can hold 5 values
int[] myIntArray = new int[5]; // Array of int type, can hold 5 values
Dim myIntArray(4) As Integer ' Array of int type, can hold 5 values
$vbLabelText   $csharpLabel

要訪問數組的元素,使用從 0 開始的索引來為第一個元素編號。

myIntArray[0] = 10; // Sets the first element of the array to 10
myIntArray[0] = 10; // Sets the first element of the array to 10
myIntArray(0) = 10 ' Sets the first element of the array to 10
$vbLabelText   $csharpLabel

請記住,C#中的數組是“引用類型”,因此對一個變數作出的更改將影響任何“引用”相同數組的“其他變數”。

在 C# 中使用 IronPDF 生成 PDF

IronPDF 是一個強大的 C# 庫,允許開發者創建、編輯和提取 PDF 中的內容。 這對於像生成報告或創建動態發票這樣的任務來說是非常有幫助的。

使用 IronPDF 入門

首先,您需要安裝 IronPDF。 您可以通過 NuGet,一個流行的 .NET 套件管理器來做到這一點。 在您的工具包管理器控制台中運行以下命令:

Install-Package IronPdf

從 HTML 創建 PDF

IronPDF 能夠從 HTML 創建 PDF。 這相當直接:

using IronPdf;

var Renderer = new ChromePdfRenderer();
Renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1>").SaveAs("HelloWorld.pdf");
using IronPdf;

var Renderer = new ChromePdfRenderer();
Renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1>").SaveAs("HelloWorld.pdf");
Imports IronPdf

Private Renderer = New ChromePdfRenderer()
Renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1>").SaveAs("HelloWorld.pdf")
$vbLabelText   $csharpLabel

上面的代碼將生成帶有 "Hello, World!" 標題的 PDF。 注意,HTML 代碼只是字符串而已。 在 C# 中,字符串是一種引用類型,它是 C# 中最常用的類型之一。

C# 類型(開發人員如何運作)圖 1 - Hello World 文本

結論

恭喜! 您對 C# 類型的世界進行了深入探討,了解了值類型、引用類型、預定義的資料類型,以及它們如何塑造您的代碼編寫方式。 您還看到了使用像 IronPDF 這樣的庫的威力。

IronPDF 提供免費試用,IronPDF 的許可證起價為$liteLicensing

常見問題解答

C# 是強型別語言意味著什麼?

C# 是強型別語言,這意味著每個變數和物件都必須具有已宣告的資料型別,這決定了可以儲存什麼類型的資料。這在使用像 IronPDF 這樣的庫來處理資料時可確保型別安全和一致性。

怎樣在 C# 中將 HTML 轉換為 PDF?

您可以使用 IronPDF 的 RenderHtmlAsPdf 方法將 HTML 字符串轉換為 PDF。您還可以使用 RenderHtmlFileAsPdf 將 HTML 文件轉換為 PDF。

C# 中的值型別是什麼?

C# 中的值型別儲存分配給它們的實際資料。常見範例包括整數 (int)、浮點數 (floatdouble) 以及布林值 (bool)。這些型別在使用 IronPDF 進行資料處理任務時非常有用。

C# 中參考型別的目的何在?

C# 中的參考型別儲存實際資料在記憶體中的位置。這在使用像 IronPDF 這樣的庫中至關重要,因為如果它們引用相同的資料,改變一個變數就可能影響另一個變數。

如何在 C# 中進行隱式型別轉換?

C# 中的隱式型別轉換是在將一種型別的值分配給可以容納更大值的兼容型別時自動發生的。例如,將 int 轉換為 double 是自動完成的,這在使用 IronPDF 時可能會遇到。

您能舉一個 C# 中顯式型別轉換的例子嗎?

在 C# 中,當需要在不兼容型別之間進行轉換時,需要進行顯式型別轉換或強制轉換,例如將 double 轉換為 int。這是通過在值前將目標型別放在括號中來完成的,該方法也可以在使用 IronPDF 進行專門的資料處理時應用。

C# 中如何使用陣列?

C# 中的陣列是參考型別,可以儲存多個相同資料型別的值。您可以通過指定資料型別,然後括上方括號來宣告它們,並使用 new 關鍵字創建陣列並指定其長度。此概念在使用 IronPDF 管理大型資料集時非常有用。

如何在 C# 中使用庫從 HTML 創建 PDF?

IronPDF 是一個強大的 C# 庫,允許開發人員從 HTML 創建 PDF。通過使用 RenderHtmlAsPdf 等方法,您可以輕鬆直接從 HTML 內容生成 PDF。

在 C# 中使用 IronPDF 進行 PDF 操作的好處是什麼?

IronPDF 提供了一整套強大的功能,用於在 C# 中創建、編輯和從 PDF 中提取內容。它支持將 HTML 轉換為 PDF、添加頁眉和頁腳等,使其成為處理 PDF 文件的開發人員不可或缺的工具。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。