跳至頁尾內容
開發者更新

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

在任何編程語言中,理解資料型別至關重要,C#也不例外。 無論是int型別還是浮點型別,每個型別都包含特定種類的資訊,也就是實際資料。

The Basics of C

C#是一種強型別語言。 但您可能會問,什麼是強型別語言呢? 這意味著每個變數和物件必須有一個聲明的資料型別。 而且正是資料型別決定了您可以在那個變數中儲存什麼樣的資料。

C#有兩大資料型別:值型別和引用型別。這些也是您可能聽說過的使用者自定義型別。

Value Types in C

在C#中,值型別很簡單。 當您聲明一個值型別變數時,實際儲存的資料是您賦給變數的值。 如果改變一個變數的值,不會影響其他變數。

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

  • 整數(由int型別表示)
  • 浮點數(由double型別表示)
  • 布林值,可以為true或false

首先談談int型別是一個32位的資料型別,可以儲存從-2,147,483,648到2,147,483,647的整數。以下是一個例子:

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

現在,進入浮點型別。 在C#中,有兩種浮點型別:double

float型別是一種32位浮點數,精確度可達7位數。 這對於科學計算非常有用。 可以這樣宣告一個float型別的變數:

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

double型別是一種64位浮點型別,精確度可達15-16位數。 它比float型別更準確,常用於金融和貨幣計算中。 以下是一個double型別變數的例子:

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

Predefined Data Types in C

好的,繼續。 C#提供了若干"預定義資料型別",可以在您的應用程式中使用。 這些是您可以用來定義自己的"使用者自定義型別"的基本組件。

這裡有幾個例子:

  • byte這是一種8位無符號整數,範圍從0到255。
  • char這是一個16位的Unicode字元。
  • decimal因其高精度,適合金融和貨幣計算。
  • false,非常適合邏輯運算。

每一個"預定義資料型別"都有其目標和"預設值",因此選擇適合您需求的型別非常重要!

Default Values in C

在C#中,每種資料型別都有預設值。 對於值型別變數,如果您不初始化它們,它們會自動取預設值。

例如,double)的預設值是0.0。

引用型別的預設值是null,表示它不引用任何物件。

Type Conversion in C

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

隱式轉換會在您將一個型別的值賦給能儲存更大值的相容型別的變數時自動發生。 例如,您可以將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

Reference Types in 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

在這裡,person2都指向同一個記憶體位置。 如果我們改變person2將反映這一變化:

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

Arrays in 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#中的陣列是"引用型別",因此在一個變數中進行的更改將影響任何引用同一陣列的"其他變數"。

Generating PDFs with IronPDF in C

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 文件的開發人員必備工具。

Jacob Mellor,首席技術官 @ Team Iron
首席技術官

Jacob Mellor是Iron Software的首席技術官,一位在C# PDF技術上開創先河的遠見工程師。作為Iron Software核心程式碼庫的原開發者,他從創立以來就一直在塑造公司的產品架構,與首席執行官Cameron Rimington一起將公司轉變為服務於NASA、特斯拉和全球政府公司的50多名人員的公司。

Jacob擁有曼徹斯特大學的土木工程一等榮譽學士學位(BEng),於1998-2001年之間獲得。在1999年於倫敦創辦他的第一家軟體公司並於2005年建立了他的第一批.NET元組件後,他專注於解決Microsoft生態系統中的複雜問題。

他的旗艦IronPDF和Iron Suite .NET程式庫在全球獲得了超過3000萬次NuGet安裝依據,他的基礎程式碼基繼續支援著世界各地開發者使用的工具。擁有25年的商業經驗和41年的程式設計專業知識,他仍專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話