
C# Ref (Comment ça fonctionne pour les développeurs)
En C#, le mot-clé ref est une fonction puissante qui permet aux méthodes de modifier la valeur du paramètre des variables de type référence passées. Comprendre comment utiliser ref peut améliorer votre capacité à gérer et manipuler des données au sein de vos applications.
Cet article vous guidera à travers les bases du mot-clé ref, son application et les nuances de son utilisation avec différents types de données. Nous apprendrons également à propos de la bibliothèque IronPDF for .NET, qui est une bibliothèque PDF.
Comprendre les paramètres ref
Un paramètre ref est un paramètre de méthode qui agit comme une référence à la variable passée à la méthode. Contrairement aux paramètres de valeur standard, où seule une copie de la variable est passée, les paramètres ref permettent à la méthode appelée de modifier la valeur originale de la variable. Ce comportement est crucial lorsque vous avez besoin qu'une méthode mette à jour l'état des variables qui lui sont passées.
Considérez l'exemple suivant pour démontrer l'utilisation basique de ref, en se concentrant sur la manière dont une variable de type référence conserve sa valeur de paramètre dans le même objet tout au long des appels de méthode :
class Program
{
static void Main()
{
int number = 100;
ModifyNumber(ref number);
Console.WriteLine(number); // Output: 200
}
// Method that modifies the original number through 'ref'
static void ModifyNumber(ref int number)
{
number = 200; // Modifies the original value
}
}Friend Class Program
Shared Sub Main()
Dim number As Integer = 100
ModifyNumber(number)
Console.WriteLine(number) ' Output: 200
End Sub
' Method that modifies the original number through 'ref'
Private Shared Sub ModifyNumber(ByRef number As Integer)
number = 200 ' Modifies the original value
End Sub
End ClassDans cet exemple, la méthode Main déclare un entier number et l'initialise à 100. Ensuite, elle appelle ModifyNumber, passant number comme un paramètre ref. À l'intérieur de ModifyNumber, la valeur de number est changée à 200. Puisque number est passé par référence, le changement est reflété dans la valeur originale dans la méthode Main, et 200 est imprimé à la console.
Comment fonctionnent les paramètres ref
Lorsque vous déclarez un paramètre de méthode avec le mot-clé ref, vous indiquez au compilateur que le paramètre référencera la variable originale plutôt qu'une copie. Cela est réalisé en passant l'adresse mémoire de la variable, plutôt que la valeur réelle. La méthode appelée et la méthode appelante accèdent toutes deux au même emplacement mémoire, ce qui signifie que toute modification apportée au paramètre est directement appliquée à la variable d'origine.
La clé pour comprendre ref est de reconnaître qu'il peut être utilisé à la fois avec les types valeur et les types référence. Les types valeur incluent des types de données simples comme les entiers et les structures, tandis que les types référence incluent les objets et les tableaux. Cependant, bien que les variables de type référence détiennent intrinsèquement des adresses mémoire, l'utilisation de ref avec des types de référence vous permet de modifier la référence réelle, et pas seulement le contenu de l'objet.
Différences entre ref et out
Bien que les mots-clés ref et out permettent de modifier les variables originales, il existe des distinctions importantes. Un paramètre out ne nécessite pas d'initialisation avant d'être passé à une méthode. Inversement, un paramètre ref exige que la variable soit initialisée avant d'être passée. De plus, une méthode utilisant un paramètre out est obligée d'assigner une valeur avant que la méthode ne retourne. Cette exigence ne s'applique pas aux paramètres ref.
Voici comment vous pourriez utiliser le mot-clé out :
class Program
{
static void Main()
{
int result;
CalculateResult(out result);
Console.WriteLine(result); // Output: 100
}
// Method that calculates a result and assigns it via 'out'
static void CalculateResult(out int calculation)
{
calculation = 20 * 5; // Must initialize the out parameter
}
}Friend Class Program
Shared Sub Main()
Dim result As Integer = Nothing
CalculateResult(result)
Console.WriteLine(result) ' Output: 100
End Sub
' Method that calculates a result and assigns it via 'out'
Private Shared Sub CalculateResult(ByRef calculation As Integer)
calculation = 20 * 5 ' Must initialize the out parameter
End Sub
End ClassDans ce cas, CalculateResult initialise le calculation dans la méthode, et Main reflète le résultat.
Utilisation pratique de ref dans la surcharge de méthode
ref peut également être utilisé dans la surcharge de méthode, où la signature de la méthode est modifiée par le mot-clé ref. Les signatures de méthode sont composées du nom de la méthode et de ses types de paramètres, y compris si les paramètres sont passés par référence (ref), par valeur, ou comme un paramètre out.
Envisagez de surcharger les méthodes en fonction de paramètres ref et valeur :
class Program
{
static void Main()
{
int normalParameter = 10, refParameter = 10;
IncrementValue(normalParameter);
IncrementValue(ref refParameter);
Console.WriteLine($"Normal: {normalParameter}, Ref: {refParameter}"); // Output: Normal: 10, Ref: 11
}
// Method that increments a copy of the integer
static void IncrementValue(int number)
{
number++;
}
// Method that increments the original integer using 'ref'
static void IncrementValue(ref int number)
{
number++;
}
}Friend Class Program
Shared Sub Main()
Dim normalParameter As Integer = 10, refParameter As Integer = 10
IncrementValue(normalParameter)
IncrementValue(refParameter)
Console.WriteLine($"Normal: {normalParameter}, Ref: {refParameter}") ' Output: Normal: 10, Ref: 11
End Sub
' Method that increments a copy of the integer
'INSTANT VB TODO TASK: VB does not allow method overloads which differ only in parameter ByVal/ByRef:
'ORIGINAL LINE: static void IncrementValue(int number)
Private Shared Sub IncrementValue(ByVal number As Integer)
number += 1
End Sub
' Method that increments the original integer using 'ref'
'INSTANT VB TODO TASK: VB does not allow method overloads which differ only in parameter ByVal/ByRef:
'ORIGINAL LINE: static void IncrementValue(ref int number)
Private Shared Sub IncrementValue(ByRef number As Integer)
number += 1
End Sub
End ClassIci, IncrementValue est surchargé avec une version prenant un paramètre normal et une prenant un paramètre ref. La version ref incrémente la variable originale, tandis que la version normale ne change qu'une copie.
Introduction à IronPDF

IronPDF for .NET PDF Solutions est une bibliothèque .NET complète conçue pour travailler avec des documents PDF. Elle est principalement construite en C# et se concentre sur la simplification de la création et de la manipulation de PDFs à partir de contenu HTML. En utilisant un moteur de rendu Chrome, IronPDF fournit des documents PDF de haute qualité, au pixel près, qui capturent les nuances du HTML, du CSS, du JavaScript et du contenu d'image.
Cette bibliothèque est polyvalente, prenant en charge un large éventail d'environnements .NET, y compris .NET Framework, .NET Core et .NET Standard, ce qui la rend adaptée à diverses applications, des systèmes de bureau aux systèmes basés sur le web. IronPDF ne supporte pas seulement la création de PDF mais offre également des fonctionnalités pour éditer, sécuriser et convertir des PDFs en d'autres formats.
Cette capacité s'étend à l'extraction de texte et d'images, au remplissage de formulaires et même à l'application de signatures numériques, assurant une gestion complète des documents PDF au sein des applications .NET.
Intégration d'IronPDF avec C# et le mot-clé ref
IronPDF peut être intégré à C# pour exploiter les fonctionnalités robustes du langage, y compris l'utilisation du mot-clé ref pour passer des paramètres par référence. Cette intégration permet une génération dynamique de PDF où le contenu peut dépendre de variables dont les valeurs sont déterminées à l'exécution.
Pour illustrer l'intégration d'IronPDF avec C# en utilisant le mot-clé ref, envisagez un scénario où nous voulons générer un rapport PDF qui inclut une valeur calculée dynamiquement. Cette valeur sera calculée au sein d'une méthode qui accepte un paramètre ref, permettant à la méthode de modifier cette valeur, qui est ensuite reflétée dans le PDF généré.
Exemple de code : Générer un PDF avec du contenu dynamique en utilisant ref
Le code C# suivant démontre comment utiliser IronPDF en conjonction avec le mot-clé ref pour générer un document PDF. Le code calcule une valeur, la modifie via une méthode qui accepte un paramètre ref, puis utilise IronPDF pour générer un PDF qui inclut ce contenu dynamique.
using IronPdf;
using System;
class Program
{
static void Main(string[] args)
{
// Set your IronPDF license key
License.LicenseKey = "License-Key";
// Initialize the value
int totalSales = 150;
// Modify the value within the method using 'ref'
AddMonthlyBonus(ref totalSales);
// Use IronPDF to generate a PDF report
var Renderer = new ChromePdfRenderer();
var PDF = Renderer.RenderHtmlAsPdf($"<h1>Monthly Sales Report</h1><p>Total Sales, including bonus: {totalSales}</p>");
// Save the PDF to a file
PDF.SaveAs("MonthlySalesReport.pdf");
// Confirm the PDF has been generated
Console.WriteLine("PDF generated successfully. Check your project directory.");
}
// Method that adds a monthly bonus to sales using 'ref'
static void AddMonthlyBonus(ref int sales)
{
// Assume a bonus of 10% of the sales
sales += (int)(sales * 0.1);
}
}Imports IronPdf
Imports System
Module Program
Sub Main(args As String())
' Set your IronPDF license key
License.LicenseKey = "License-Key"
' Initialize the value
Dim totalSales As Integer = 150
' Modify the value within the method using 'ByRef'
AddMonthlyBonus(totalSales)
' Use IronPDF to generate a PDF report
Dim Renderer = New ChromePdfRenderer()
Dim PDF = Renderer.RenderHtmlAsPdf($"<h1>Monthly Sales Report</h1><p>Total Sales, including bonus: {totalSales}</p>")
' Save the PDF to a file
PDF.SaveAs("MonthlySalesReport.pdf")
' Confirm the PDF has been generated
Console.WriteLine("PDF generated successfully. Check your project directory.")
End Sub
' Method that adds a monthly bonus to sales using 'ByRef'
Sub AddMonthlyBonus(ByRef sales As Integer)
' Assume a bonus of 10% of the sales
sales += CInt(sales * 0.1)
End Sub
End Module
Dans cet exemple, totalSales commence à 150. La méthode AddMonthlyBonus prend cette valeur par référence en utilisant le mot-clé ref, calcule une prime de 10 %, et l'ajoute à la valeur de vente originale. IronPDF génère ensuite un document PDF contenant un extrait HTML qui rapporte le total des ventes, y compris le bonus. Le document final est enregistré localement sous le nom 'MonthlySalesReport.pdf'.
Conclusion
Comprendre le mot-clé ref en C# fournit un outil précieux pour gérer comment les données sont passées entre les méthodes. En permettant aux méthodes de modifier directement les valeurs originales des paramètres qui leur sont passés, ref peut rendre vos méthodes plus flexibles et puissantes.
À mesure que vous acquérez de l'expérience avec ref, vous comprendrez mieux quand et comment l'utiliser efficacement pour répondre à vos besoins en programmation. IronPDF propose une version d'essai gratuite pour commencer avec les capacités PDF et les tarifs commencent à partir de $999.

Jacob Mellor est directeur de la technologie chez Iron Software et un ingénieur visionnaire pionnier de la technologie C# PDF. En tant que développeur à l'origine de la base de code centrale d'Iron Software, il a façonné l'architecture des produits de l'entreprise depuis sa création, la transformant aux côtés du PDG Cameron Rimington en une entreprise de plus de 50 personnes au service de la NASA, de Tesla et d'agences gouvernementales mondiales.
Articles connexes


