Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1412 of 1492 menu
◀ ▶

OverloadResolutionPriority

Больший приоритет выигрывает при споре перегрузок. Метод со string с приоритетом 1 выбирается вместо ReadOnlySpan<char>. Нужен System.Runtime.CompilerServices.

Синтаксис

[OverloadResolutionPriority(1)] static string Pick(string value) { return value; }

Пример

Давайте вызвать Pick со строкой abcde:

using System; using System.Runtime.CompilerServices; class Program { [OverloadResolutionPriority(1)] static string Pick(string value) { return value; } static string Pick(ReadOnlySpan<char> value) { return "12345"; } static void Main() { string res = Pick("abcde"); Console.WriteLine(res); } }

Результат выполнения кода:

"abcde"

Пример

Давайте вызвать перегрузку со ReadOnlySpan явно:

using System; using System.Runtime.CompilerServices; class Program { [OverloadResolutionPriority(1)] static string Pick(string value) { return value; } static string Pick(ReadOnlySpan<char> value) { return "12345"; } static void Main() { ReadOnlySpan<char> text = "abcde"; string res = Pick(text); Console.WriteLine(res); } }

Результат выполнения кода:

"12345"

Пример

Давайте прочитать приоритет строковой перегрузки:

using System; using System.Reflection; using System.Runtime.CompilerServices; class Program { [OverloadResolutionPriority(1)] static string Pick(string value) { return value; } static string Pick(ReadOnlySpan<char> value) { return "12345"; } static void Main() { MethodInfo method = typeof(Program).GetMethod( "Pick", new Type[] { typeof(string) }); OverloadResolutionPriorityAttribute item = method .GetCustomAttribute<OverloadResolutionPriorityAttribute>(); int res = item.Priority; Console.WriteLine(res); } }

Результат выполнения кода:

1

Смотрите также

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить