Skip to content

ErcanOPAK.com

  • ASP.Net WebForms
  • ASP.Net MVC
  • C#
  • SQL
  • MySQL
  • PHP
  • Devexpress
  • Reportviewer
  • About
C#

What is the difference between ‘ref’ and ‘out’ keywords in C#

- 14.01.23 - ErcanOPAK

The best way to understand that difference is to show it in code.

Let’s say we have an ‘Add’ function. And the only thing that method does is add 10 to the parameter value.

static void Main (string[] args) 
{ 
     int myParameter = 20; 
     Add(myParameter); 

     Console.WriteLine(myParameter); }

static void Add(int myParameter)
{
     myParameter = myParameter + 10;
}

What happens if that code works?

static void Main (string[] args) 
{ 
int myParameter = 20; //myParameter = 20;
Add(myParameter); //myParameter is sent to function and there a new copy of this value manipulated to 30 (20 + 10)

Console.WriteLine(myParameter); //myParameter = 20 (Add function did not change the value of myParameter in the main.) 
}

 

 

Now it is time to use “ref“:

static void Main (string[] args) 
{ 
     int myParameter = 20; 
     Add(myParameter); 

     Console.WriteLine(ref myParameter); }

static void Add(ref int myParameter)
{
     myParameter = myParameter + 10;
}

What happens if that code works?

static void Main (string[] args) 
{ 
int myParameter = 20; //myParameter = 20;
Add(myParameter); //myParameter is sent to function and its refence value updated to 30 (20 + 10)

Console.WriteLine(myParameter); //myParameter = 30 (Add function updated the value of myParameter in the main.)
}

 

 

And finally, let’s use “out“:

static void Main (string[] args) 
{ 
     int myParameter = 20; 
     Add(myParameter); 

     Console.WriteLine(out myParameter); }

static void Add(out int myParameter)
{
     myParameter = 0; //We have to initialize the out parameter inside the function.
     myParameter = myParameter + 10;
}

What happens if that code works?

static void Main (string[] args) 
{ 
int myParameter = 20; //myParameter = 20;
Add(myParameter); //myParameter is sent to function and its refence value updated to 10 (0 + 10)

Console.WriteLine(myParameter); //myParameter = 10 (Add function updated the value of myParameter in the main. But this time the value we sent in the main is ignored.)
}

So here are the main differences between ref and out:
– You have to initialize your ref parameter before sending. But you don’t have to do that for out parameter.
– You have to initialize your out parameter in the function you sent. But you don’t have to do that for ref parameter.

Related posts:

@helpers in Asp.NET MVC Razor
Using View Model to pass Multiple Models in Single View in MVC
How to calculate the sum of the datatable column in asp.net?
How to use SQL RAISEERROR() messages in C#
Post Views: 15

Post navigation

How to check if javascript is enabled on the client’s browser
Geçmiş Olsun Türkiyem

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

October 2024
M T W T F S S
 123456
78910111213
14151617181920
21222324252627
28293031  
« Sep    

Most Viewed Posts

  • Get the User Name and Domain Name from an Email Address in SQL (848)
  • Get the First and Last Word from a String or Sentence in SQL (756)
  • How to select distinct rows in a datatable in C# (703)
  • How to add default value for Entity Framework migrations for DateTime and Bool (584)
  • Add Constraint to SQL Table to ensure email contains @ (521)
  • How to enable, disable and check if Service Broker is enabled on a database in SQL Server (480)
  • How to make theater mode the default for Youtube (465)
  • Average of all values in a column that are not zero in SQL (453)
  • Find numbers with more than two decimal places in SQL (383)
  • How to use Map Mode for Vertical Scroll Mode in Visual Studio (371)

Recent Posts

  • How to Reset Taskbar in Windows 11
  • Essential Steps to Take After Windows 11 Updates
  • How to list all tables referencing a table by Foreign Key in MS SQL
  • How to format date in Javascript
  • How to generate a random number for each row in T-SQL
  • How to solve ‘Microsoft.TeamFoundation.Git.Contracts.GitCheckoutConflictException’ problem
  • Why nautical mile equals 1852 mt
  • How to Find Day Name From Date in SQL Server
  • How to make pagination in MS SQL Server
  • How to update Identity Column in SQL Server

Most Viewed Posts

  • Get the User Name and Domain Name from an Email Address in SQL (848)
  • Get the First and Last Word from a String or Sentence in SQL (756)
  • How to select distinct rows in a datatable in C# (703)
  • How to add default value for Entity Framework migrations for DateTime and Bool (584)
  • Add Constraint to SQL Table to ensure email contains @ (521)

Recent Posts

  • How to Reset Taskbar in Windows 11
  • Essential Steps to Take After Windows 11 Updates
  • How to list all tables referencing a table by Foreign Key in MS SQL
  • How to format date in Javascript
  • How to generate a random number for each row in T-SQL

Social

  • ErcanOPAK.com
  • GoodReads
  • LetterBoxD
  • Linkedin
  • The Blog
  • Twitter

© 2024 ErcanOPAK.com

Proudly powered by WordPress | Theme: Xblog Plus by wpthemespace.com