C# Compiler Error
CS0192 – Fields of static readonly field ‘name’ cannot be passed ref or out (except in a static constructor)
Reason for the Error
You will receive this error when you have declared a field as readonly and you try to pass the readonly field to a ref or out parameter outside of constructor in your C# code.
For example, try to compile the below code snippet.
namespace DeveloperPubNamespace
{
class Employee
{
public readonly int Id;
static void SetId(ref int refId)
{
refId = 0;
}
public void InitializeEmployee()
{
SetId(ref Id); // CS0192
}
}
class Program
{
static void Main(string[] args)
{
}
}
}The above code snippet will result with the C# error code CS0192 because Id is a readonly field is been passed to the ref parameter of the SetId function.
Error CS0192 A readonly field cannot be used as a ref or out value (except in a constructor) ConsoleApp3 C:\Users\SenthilBalu\source\repos\ConsoleApp3\ConsoleApp3\Program.cs 12 Active

Solution
To fix the error, ensure that the readonly fields are not passed to the ref or out parameter to functions in your C# code. You can however pass the readonly field to out or ref parameter inside constructor.
Below is a sample code snippet demonstrating how to fix the error code CS0191.
namespace DeveloperPubNamespace
{
class Employee
{
public readonly int Id;
static void SetId(ref int refId)
{
refId = 0;
}
public Employee()
{
SetId(ref Id);
}
}
class Program
{
static void Main(string[] args)
{
}
}
}