‘out’ is a keyword in C#, which is used to pass arguments to a method as a reference type. Variables passed to a method as out parameters do not need to be declared or initialized before they are passed to the method call. The called method is required to assign values to the variables of out parameters before the control leaves the called method and before the called method returns any value to the calling method. It is possible to pass multiple out parameters to a method and the method returns multiple values.
Syntax with explanation:
While calling the method using the out parameter, the syntax will be as follows:
Method_name(out data_type variable_name);
Here, Method_name is any user-defined name given to the method, ‘out’ is the keyword used to express that the variable passed to the method is an out parameter, data_type can be any data type of the variable and variable_name is the user-defined name of the variable.
The syntax for the method to be called is as follows:
access_specifier return_type Method_name(out data_type variable_name);
Here, access_specifier can be any access specifier among the five access specifiers supported by C# like a public or private. Then, return_type is the type of data this method returns followed by method name and ‘out’ parameter list.
How ‘out’ parameter works in C#?
In C#, ‘out’ keyword works similar to the ‘ref’ and ‘in’ keywords. The difference between ‘out’ and ‘ref’ parameters is that, ‘out’ parameter variables do not need to be initialized before they are passed to a method, the user can declare the ‘out’ parameter variable in the argument list of the method instead of declaring it separately which is called inline declaration of ‘out’ parameter whereas the ‘ref’ parameter variables need to be initialized before they are passed to a method. The inline declared ‘out’ parameters can be accessed in the same block of code.
Example #1
Code:
using System; namespace ConsoleApp4 { public class Program { public static void Main(string[] args) { //inline declaration of 'out' parameter Display(out int num); Console.WriteLine("Value of variable 'num': {0}", num); Console.ReadLine(); } public static void Display(out int a) { //need to assign value a = 10; a += a; } } }
Output:
- Now, the difference between ‘out’ and ‘in’ keyword is that, ‘out’ parameter values can be modified inside the called method whereas the ‘in’ parameter values cannot be modified inside the called method.
- A method can have more than one ‘out’ parameters such as: Display(out x, out y);
- To work with ‘out’ parameters, the user needs to explicitly use the ‘out’ keyword in the method definition and also in the calling method. At the same time, it is not necessary that the names given to the ‘out’ parameters in method definition and call should be the same.
- The ‘out’ parameters are passed by reference to a method therefore they do not create new storage location in the memory and uses the same storage location occupied by the variable arguments in the method invocation. As the method using ‘out,’ parameters can return multiple values, it helps the user to get multiple processed values from the called method. But before the method returns any value to the calling method, the ‘out’ parameters must be assigned with some values in the method.
- We cannot work with ‘out’ parameters in all types of methods like we cannot use ‘out’ parameters in asynchronous methods which we define using ‘async’ modifier and also we cannot use ‘out’ parameters in ‘iterator’ methods which consist of ‘yield return’ or ‘yield break’ statement. As properties are not variables, therefore, we cannot pass them as ‘out’ parameters to a method.
- The ‘out’ parameter can be defined using a generic type to indicate that the type parameter is covariant. Along with this the ‘out’ parameter is used in the TryParse() methods for different data types in C#. The TryParse() method returns a Boolean value which specifies success or failure and on the success, the result is given by the ‘out’ parameter.
Example #2
Code:
using System; namespace ConsoleApp4 { public class Program { public static void Main(string[] args) { string str = "123456"; int num; //if ‘canParse’ is true; the result of conversion will be stored in ‘num’ bool canParse = Int32.TryParse(str, out num); if (canParse) Console.WriteLine(num); else Console.WriteLine("Could not be parsed."); Console.ReadLine(); } } }
Output:
Examples of C# Out Parameter
Given below are the examples of C# Out Parameter:
Example #1
Example showing multiple ‘out’ parameters passed to a method and then the method returns multiple values.
Code:
using System; namespace ConsoleApp4 { public class Program { public static void Main() { //declaring variables without assigning values float area, perimeter; //passing multiple variables to a method using 'out' keyword Calculate(5, 10, out area, out perimeter); //displaying the result Console.WriteLine("The area of rectangle is: {0}", area); Console.WriteLine("The perimeter of rectangle is: {0}", perimeter); Console.ReadLine(); } //method taking length & breadth & it will return area and perimeter of rectangle public static void Calculate(int length, int breadth, out float area, out float perimeter) { area = length * breadth; perimeter = 2 * (length + breadth); } } }
Output:
Example #2
Example showing the inline declaration of ‘out’ parameter.
Code:
using System; namespace ConsoleApp4 { public class Program { public static void Main() { //in-line declaration of variables without assigning values Calculate(out int length, out int breadth, out float area); //displaying the values of length, breadth, and area Console.WriteLine("Length of rectangle: " + length); Console.WriteLine("Breadth of rectangle: " + breadth); Console.WriteLine("Area of rectangle: " + area); Console.ReadLine(); } //method taking 'out' parameters and it returns multiple values public static void Calculate(out int l, out int b, out float a) { l = 30; b = 40; a = l * b; } } }
Output:
Conclusion
‘out’ parameter in C# allows users to pass arguments by reference to a method. Variable used as ‘out’ parameter does not require to be initialized before it is passed to a method. The called method should assign value to the out parameter before it returns a value.
The above is the detailed content of C# Out Parameter. For more information, please follow other related articles on the PHP Chinese website!

C# is a modern, object-oriented programming language developed by Microsoft and as part of the .NET framework. 1.C# supports object-oriented programming (OOP), including encapsulation, inheritance and polymorphism. 2. Asynchronous programming in C# is implemented through async and await keywords to improve application responsiveness. 3. Use LINQ to process data collections concisely. 4. Common errors include null reference exceptions and index out-of-range exceptions. Debugging skills include using a debugger and exception handling. 5. Performance optimization includes using StringBuilder and avoiding unnecessary packing and unboxing.

Testing strategies for C#.NET applications include unit testing, integration testing, and end-to-end testing. 1. Unit testing ensures that the minimum unit of the code works independently, using the MSTest, NUnit or xUnit framework. 2. Integrated tests verify the functions of multiple units combined, commonly used simulated data and external services. 3. End-to-end testing simulates the user's complete operation process, and Selenium is usually used for automated testing.

Interview with C# senior developer requires mastering core knowledge such as asynchronous programming, LINQ, and internal working principles of .NET frameworks. 1. Asynchronous programming simplifies operations through async and await to improve application responsiveness. 2.LINQ operates data in SQL style and pay attention to performance. 3. The CLR of the NET framework manages memory, and garbage collection needs to be used with caution.

C#.NET interview questions and answers include basic knowledge, core concepts, and advanced usage. 1) Basic knowledge: C# is an object-oriented language developed by Microsoft and is mainly used in the .NET framework. 2) Core concepts: Delegation and events allow dynamic binding methods, and LINQ provides powerful query functions. 3) Advanced usage: Asynchronous programming improves responsiveness, and expression trees are used for dynamic code construction.

C#.NET is a popular choice for building microservices because of its strong ecosystem and rich support. 1) Create RESTfulAPI using ASP.NETCore to process order creation and query. 2) Use gRPC to achieve efficient communication between microservices, define and implement order services. 3) Simplify deployment and management through Docker containerized microservices.

Security best practices for C# and .NET include input verification, output encoding, exception handling, as well as authentication and authorization. 1) Use regular expressions or built-in methods to verify input to prevent malicious data from entering the system. 2) Output encoding to prevent XSS attacks, use the HttpUtility.HtmlEncode method. 3) Exception handling avoids information leakage, records errors but does not return detailed information to the user. 4) Use ASP.NETIdentity and Claims-based authorization to protect applications from unauthorized access.

The meaning of colon (':') in C language: conditional statement: separating conditional expressions and statement block loop statement: separating initialization, conditional and incremental expression macro definition: separating macro name and macro value single line comment: representing the content from colon to end of line as comment array dimension: specify the dimension of the array

A in C language is a post-increase operator, and its operating mechanism includes: first obtaining the value of the variable a. Increase the value of a by 1. Returns the value of a after increasing.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

SublimeText3 Linux new version
SublimeText3 Linux latest version

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

SublimeText3 Chinese version
Chinese version, very easy to use

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.