C# Compiler Error
CS0446 – Foreach cannot operate on a ‘Method or Delegate’. Did you intend to invoke the ‘Method or Delegate’?
Reason for the Error
You’ll get this error in your C# code when you are using the foreach statement and you use the method name without parentheses instead of a collection class.
For example, let’s try to compile the below C# code snippet.
using System;
namespace DeveloperPublishNamespace
{
class Program
{
static void Main(string[] args)
{
int[] array1 = new int[10];
// Results with the CS0446
foreach (int i in Test)
{
}
Console.WriteLine("No Error");
}
static void Test()
{
}
}
}You’ll receive the error code CS0446 when you build the above C# code because you are using the method name “Test” without parentheses instead of using the array “array1”.
Error CS0446 Foreach cannot operate on a ‘method group’. Did you intend to invoke the ‘method group’? DeveloperPublish C:\Users\Senthil\source\repos\ConsoleApp4\ConsoleApp4\Program.cs 10 Active

Solution
You can fix this error in your C# program by ensuring that you use a collection instead of a method with out parentheses. If you intend to use a function, ensure that the function returns a collection instead of void.
using System;
namespace DeveloperPublishNamespace
{
class Program
{
static void Main(string[] args)
{
int[] array1 = new int[10];
// No Error now
foreach (int i in Test())
{
}
Console.WriteLine("No Error");
}
static int[] Test()
{
return new int[10];
}
}
}