Running the below program gives the following output:
Class is object. Class list is IEnumerable<object>.
Struct is object. Struct list is not IEnumerable<object>.
That implies that a struct instance is an object but that a list of struct instances is not IEnumerable<object>. Why is that so?
using System;
using System.Collections.Generic;
public class Program
{
public struct MyStruct
{}
public class MyClass
{}
public static void Main()
{
// Check if a class instance is an object
MyClass classInstance = new MyClass();
if (classInstance is object) Console.WriteLine("Class is object.");
else Console.WriteLine("Class is no object.");
// Check if a list of class instances is IEnumerable<object>
List<MyClass> classList = new List<MyClass>() {classInstance};
if (classList is IEnumerable<object>) Console.WriteLine("Class list is IEnumerable<object>");
else Console.WriteLine("Class list is not IEnumerable<object>");
// Check if a struct instance is an object
MyStruct structInstance = new MyStruct();
if (structInstance is object) Console.WriteLine("Struct is object.");
else Console.WriteLine("Struct is no object.");
// Check if a list of structs is IEnumerable<object>
List<MyStruct> structList = new List<MyStruct>() {structInstance};
if (structList is IEnumerable<object>) Console.WriteLine("Struct list is IEnumerable<object>");
else Console.WriteLine("Struct list is not IEnumerable<object>");
Console.ReadLine();
}
}