
Можете ли вы объяснить, почему это происходит? Я этого не понимаю.
Min1 — это обычный статический метод с той же сигнатурой, что и Min2. Но вызов Min1 - это нормально, а вызов Min2 - нет.
Смена подписи Min2 тоже не помогла. Каждое из следующих действий создает одно и то же предупреждение:
public static DateOnly? Min2(params DateOnly?[]? values)
public static DateOnly? Min2(params DateOnly[]? values)
public static DateOnly? Min2(params DateOnly?[] values)
Полный код на случай, если вы захотите попробовать его самостоятельно (я использовал .NET 10.0):
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Linq;
namespace MyTests;
[TestClass]
public class DateOnlyExtensionsTest
{
[TestMethod]
public void TestMin()
{
DateOnly d1 = new DateOnly(2025, 10, 1);
DateOnly d2 = new DateOnly(2025, 10, 2);
var min1 = Min1(d1, d2);
var min2 = DateOnly.Min2(d1, d2);
var min3 = DateOnly.Min3(d1, d2);
var min4 = DateOnly.Min4(d1, d2);
var min5 = DateOnly.Min5(d1, d2);
Assert.AreEqual(min1, d1);
Assert.AreEqual(min2, d1);
Assert.AreEqual(min3, d1);
Assert.AreEqual(min4, d1);
Assert.AreEqual(min5, d1);
}
public DateOnly Min1(params DateOnly[] values)
{
return values.Min();
}
}
public static class DateOnlyExtensions
{
extension(DateOnly)
{
public static DateOnly Min2(params DateOnly[] values)
{
return values.Min();
}
public static DateOnly? Min3(params DateOnly?[]? values)
{
return values?.Min();
}
public static DateOnly? Min4(params DateOnly[]? values)
{
return values?.Min();
}
public static DateOnly? Min5(params DateOnly?[] values)
{
return values.Min();
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... -extension
Мобильная версия