Если я напишу класс, как у меня ниже:
using System;
namespace MyNamespace
{
public class MyClass1
{
//example Functor
public Func<int, bool> IsLeapYear { get; set; } = (year) => (year % 4u == 0u && year % 100 != 0) || (year % 400 == 0);
}
}
Есть ли у меня разные экземпляры функтора для каждого экземпляра MyClass или ссылки на один и тот же?
Что если я сделаю это?
using System;
namespace MyNamespace
{
public class MyClass2
{
private static readonly Func<int, bool> _isLeapYear = (year) => (year % 4u == 0u && year % 100 != 0) || (year % 400 == 0);
public Func<int, bool> IsLeapYear { get; set; } = _isLeapYear;
}
}
Я бы ожидал, что в этом случае каждый экземпляр MyClass2 будет точно содержать один и тот же экземпляр функтора. Я хочу знать, эквивалентен ли код MyClass1 коду MyClass2 , потому что у меня в одном классе тонна функторов, и я надеялся сократить свой код.
I используйте .NetCore 3.1, C# 8.0, Visual Studio Enterprise 2019. (Я пометил вопрос с помощью . net -core-3.1 , поскольку считал, что компилятор является частью фреймворка).
[Редактировать: выделен жирным шрифтом фактический вопрос]