在生產環境中測試,無水印。
在任何需要的地方都能運行。
獲得 30 天的全功能產品。
在幾分鐘內上手運行。
試用產品期間完全訪問我們的支援工程團隊
C# 中的 new 運算符關鍵字用途廣泛,在語言中擔當了多個主要功能。 從實例化物件到隱藏繼承的成員,理解它們的應用對於有效的 C# 開發至關重要。 本指南探討 new 關鍵字的多種用法,並提供清晰的範例來說明其強大靈活性。 在本指南的後面部分,我們還將探討IronSoftware的IronPDF庫概覽。
物件實例化是使用 new 運算子創建類別或結構的實例的過程。 在 C# 中,這主要是透過使用 new 關鍵字來實現,它會調用指定類型的構造函數並為新物件分配記憶體。
要建立物件的實例,新運算子後面跟著類別名稱和一對括號。 如果類別具有需要參數的建構函式,則必須在這些括號內提供引數。
public class Book {
    public string Title { get; set; }
    public Book(string title) {
        Title = title;
    }
}
Book book = new Book("The C# Programming Language");public class Book {
    public string Title { get; set; }
    public Book(string title) {
        Title = title;
    }
}
Book book = new Book("The C# Programming Language");Public Class Book
	Public Property Title() As String
	Public Sub New(ByVal title As String)
		Me.Title = title
	End Sub
End Class
Private book As New Book("The C# Programming Language")如果在類別中沒有明確定義建構函式,C# 會提供一個預設的建構函式。 然而,一旦定義了帶有參數的建構函式,就必須明確聲明無參數的建構函式(如果需要)。
public class ExampleClass {
    // Parameterless constructor
    public ExampleClass() {
        // Initialization code here
    }
}public class ExampleClass {
    // Parameterless constructor
    public ExampleClass() {
        // Initialization code here
    }
}Public Class ExampleClass
	' Parameterless constructor
	Public Sub New()
		' Initialization code here
	End Sub
End Class在 C# 中,物件創建不僅僅是關於實例化類別; 這是一個利用語言強大功能的門徑,用於撰寫更有效率、可讀性及精簡的代碼。 在此,我們探討進階技術,如操作陣列、使用類型和運用物件初始設定器,以簡化您的編碼工作。
在 C# 中創建特定類型的數組是一項基本技能,但正是這些細微差別提升了您的編程能力。 使用new關鍵字,您可以實例化陣列,指定它們的類型以及應包含的元素數量。 這對以結構化方式管理變數集合至關重要。 除了基本陣列,new 還有助於創建多維和不規則陣列,適應複雜的資料結構。
// Single-dimensional array
int [] numbers = new int [5]; // Initializes an array for 5 integers
// Multidimensional array
int [,] matrix = new int [3, 2]; // A 3x2 matrix
// Jagged array (an array of arrays)
int [][] jaggedArray = new int [3][];
jaggedArray [0] = new int [4]; // First row has 4 columns
jaggedArray [1] = new int [5]; // Second row has 5 columns
jaggedArray [2] = new int [3]; // Third row has 3 columns// Single-dimensional array
int [] numbers = new int [5]; // Initializes an array for 5 integers
// Multidimensional array
int [,] matrix = new int [3, 2]; // A 3x2 matrix
// Jagged array (an array of arrays)
int [][] jaggedArray = new int [3][];
jaggedArray [0] = new int [4]; // First row has 4 columns
jaggedArray [1] = new int [5]; // Second row has 5 columns
jaggedArray [2] = new int [3]; // Third row has 3 columns' Single-dimensional array
Dim numbers(4) As Integer ' Initializes an array for 5 integers
' Multidimensional array
Dim matrix(2, 1) As Integer ' A 3x2 matrix
' Jagged array (an array of arrays)
Dim jaggedArray(2)() As Integer
jaggedArray (0) = New Integer (3){} ' First row has 4 columns
jaggedArray (1) = New Integer (4){} ' Second row has 5 columns
jaggedArray (2) = New Integer (2){} ' Third row has 3 columns匿名型別在需要臨時資料結構且不想承受宣告正式類別的負擔時表現出色。 通過使用new搭配屬性初始化語法,您可以即時創建物件。 此功能對於需要從較大物件中選擇屬性子集的 LINQ 查詢或快速分組數據而不需創建特定類型時,非常有用。
var person = new { Name = "Alice", Age = 30 };
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
// In LINQ
var results = from p in people
              select new { p.Name, p.Age };var person = new { Name = "Alice", Age = 30 };
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
// In LINQ
var results = from p in people
              select new { p.Name, p.Age };Dim person = New With {
	Key .Name = "Alice",
	Key .Age = 30
}
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}")
' In LINQ
Dim results = From p In people
	Select New With {
		Key p.Name,
		Key p.Age
	}物件初始值設置表示一種語法便利性,允許您在不需要調用帶有參數的建構函式的情況下,創建一個類別的實例並立即設置其屬性。 這不僅使代碼更具可讀性,還通過消除針對不同場景的多個構造函數的需求來降低出錯的可能性。 物件初始化器在處理複雜物件時特別有用,讓您能夠僅設定您需要的屬性。
public class Rectangle {
    public int Width { get; set; }
    public int Height { get; set; }
    public Point Location { get; set; }
}
Rectangle rect = new Rectangle {
    Width = 100,
    Height = 50,
    Location = new Point { X = 0, Y = 0 }
};public class Rectangle {
    public int Width { get; set; }
    public int Height { get; set; }
    public Point Location { get; set; }
}
Rectangle rect = new Rectangle {
    Width = 100,
    Height = 50,
    Location = new Point { X = 0, Y = 0 }
};Public Class Rectangle
	Public Property Width() As Integer
	Public Property Height() As Integer
	Public Property Location() As Point
End Class
Private rect As New Rectangle With {
	.Width = 100,
	.Height = 50,
	.Location = New Point With {
		.X = 0,
		.Y = 0
	}
}C# 支援本地函數和 lambda 表達式,提升了代碼的靈活性和簡潔性。
區域函式是在另一個方法的範圍內定義的方法,是組織程式碼和封裝功能的強大工具。
public void PerformOperation() {
    int LocalFunction(int x) {
        return x * x;
    }
    Console.WriteLine(LocalFunction(5)); // Output: 25
}public void PerformOperation() {
    int LocalFunction(int x) {
        return x * x;
    }
    Console.WriteLine(LocalFunction(5)); // Output: 25
}Public Sub PerformOperation()
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'	int LocalFunction(int x)
'	{
'		Return x * x;
'	}
	Console.WriteLine(LocalFunction(5)) ' Output: 25
End Sub
Lambda 表達式提供了一種簡潔的方法來編寫內聯表達式或方法,而不需要明確的委派類型。
Func<int, int> square = x => x * x;
Console.WriteLine(square(5)); // Output: 25Func<int, int> square = x => x * x;
Console.WriteLine(square(5)); // Output: 25Dim square As Func(Of Integer, Integer) = Function(x) x * x
Console.WriteLine(square(5)) ' Output: 25
在類別繼承中,new 可以隱藏繼承的成員,允許衍生類別引入與其基類中成員同名的成員。
在衍生類別中使用 new 隱藏成員並不會覆蓋相同的成員; 相反,它引入了一個與基類版本不同的新成員。
public class BaseClass {
    public void Display() {
        Console.WriteLine("Base display");
    }
}
public class DerivedClass : BaseClass {
    public new void Display() {
        Console.WriteLine("Derived display");
    }
}public class BaseClass {
    public void Display() {
        Console.WriteLine("Base display");
    }
}
public class DerivedClass : BaseClass {
    public new void Display() {
        Console.WriteLine("Derived display");
    }
}Public Class BaseClass
	Public Sub Display()
		Console.WriteLine("Base display")
	End Sub
End Class
Public Class DerivedClass
	Inherits BaseClass
	Public Shadows Sub Display()
		Console.WriteLine("Derived display")
	End Sub
End Class
泛型在 C# 程式設計中引入了一個抽象層,使得開發人員可以設計作用於泛型類型的類別、方法和介面。當與 new 關鍵字配合使用時,泛型使您能夠動態實例化類型,進一步增強了代碼的可重用性並減少冗餘。
new() 約束是使用泛型時的基石,指定泛型類別或方法中的型別參數必須具有公共無參數建構函式。 此限制使您能在類別或方法中建立泛型類型的實例,使您的泛型類別和方法更靈活且強大。
public class Container<T> where T : new() {
    public T CreateItem() {
        return new T(); //new T
    }
}public class Container<T> where T : new() {
    public T CreateItem() {
        return new T(); //new T
    }
}public class Container(Of T) where T : New() {
	public T CreateItem() { Return New T(); }
}在此範例中,Container

IronPDF – 用於 PDF 生成和操作的 C# 庫 擁有強大的功能,利用 C# 的能力來處理 PDF 文件。 通過引入 IronPDF,開發者可以以編程方式從 HTML 字串、檔案或 URL 新建PDF 文檔,操作現有的 PDF,並提取內容,這一切都通過 C# 的熟悉語法實現,並利用new關鍵字進行對象實例化。
IronPDF 在HTML 到 PDF轉換中表現優異,確保精確保留原始佈局和樣式。 它非常適合從基於網絡的內容(如報告、發票和文檔)創建PDF。 IronPDF 支援 HTML 檔案、URL 和原始 HTML 字串,輕鬆製作高品質的 PDF 文件。
using IronPdf;
class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}using IronPdf;
class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}Imports IronPdf
Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()
		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Classusing IronPdf;
using System;
namespace IronPdfExample
{
    class Program
    {
//static void main
        static void Main(string [] args)
        {
            IronPdf.License.LicenseKey = "License-Key";
            // Create a new PDF document from HTML content
            var renderer = new ChromePdfRenderer();
            var pdf = renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1><p>This is a PDF generated from HTML using IronPDF.</p>");
            // Save the PDF to a file
            string filePath = "HelloWorld.pdf";
            pdf.SaveAs(filePath);
            // Confirmation message
            Console.WriteLine($"PDF file has been generated at: {Environment.CurrentDirectory}\\{filePath}");
        }
    }
}using IronPdf;
using System;
namespace IronPdfExample
{
    class Program
    {
//static void main
        static void Main(string [] args)
        {
            IronPdf.License.LicenseKey = "License-Key";
            // Create a new PDF document from HTML content
            var renderer = new ChromePdfRenderer();
            var pdf = renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1><p>This is a PDF generated from HTML using IronPDF.</p>");
            // Save the PDF to a file
            string filePath = "HelloWorld.pdf";
            pdf.SaveAs(filePath);
            // Confirmation message
            Console.WriteLine($"PDF file has been generated at: {Environment.CurrentDirectory}\\{filePath}");
        }
    }
}Imports IronPdf
Imports System
Namespace IronPdfExample
	Friend Class Program
'static void main
		Shared Sub Main(ByVal args() As String)
			IronPdf.License.LicenseKey = "License-Key"
			' Create a new PDF document from HTML content
			Dim renderer = New ChromePdfRenderer()
			Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1><p>This is a PDF generated from HTML using IronPDF.</p>")
			' Save the PDF to a file
			Dim filePath As String = "HelloWorld.pdf"
			pdf.SaveAs(filePath)
			' Confirmation message
			Console.WriteLine($"PDF file has been generated at: {Environment.CurrentDirectory}\{filePath}")
		End Sub
	End Class
End Namespace在此程式碼片段中,new IronPdf.ChromePdfRenderer() 顯示了 IronPDF 渲染器物件的實例化。 然後,該對象被用於從 HTML 字符串創建新的 PDF,展示了第三方庫與 C# 對象創建模式的無縫集成。 IronPDF 需要使用 new 關鍵字來初始化其類別,這對於正在學習物件實例化和探索 C# 高級功能的開發人員來說是一個相關的範例。
當您運行程式時,您會在控制台上看到以下信息:

一旦您打開 PDF 檔案,您會看到這個:

C# 中的 new 關鍵字是物件導向程式設計的基石,使開發人員能夠精確且輕鬆地實例化物件、管理繼承以及使用泛型。 透過實用範例,從建立簡單的類別實例到利用匿名類型和物件初始化器等進階功能,本指南展示了new的多樣性和強大功能。
IronPDF的整合展示了C#如何擴展其應用範圍,超越傳統應用程式,允許通過程式碼生成和操作PDF文件。 IronPDF為開發者提供免費試用與授權選項以探索其功能,授權價格具有競爭力。