Описание тега c#-7.0

Версия C#, выпущенная в 2017 году, добавила кортежи значений, локальные функции, базовое сопоставление с образцом, ref locals и return, async main и различные другие новые функции. В большинстве случаев вам также следует указать тег C#.
3 ответа

Как я могу включить все функции C# 7 в проекте Visual Studio 2017?

После выхода Visual Studio 2017 я хотел попробовать создать простой консольный проект с новыми функциями C# 7. Я ожидал, что я просто скачаю новую Visual Studio 2017, затем создам новый консольный проект и смогу использовать новые функции C# 7. Но я…
08 мар '17 в 15:33
1 ответ

Передача списка<T> по ссылке на метод, принимающий ref ICollection<T>

Я заметил, что List&lt;T&gt; не может быть передано таким методам, как: Foo&lt;T&gt;(ref ICollection&lt;T&gt; bar) Foo&lt;T&gt;(out ICollection&lt;T&gt; bar) Принимая во внимание, что, с другой стороны, Foo&lt;T&gt;(ICollection&lt;T&gt; bar) принима…
19 янв '18 в 23:44
1 ответ

C# 7 семантика сопоставления с образцом

У меня есть два блока кода, которые я хотел бы считать равными: Сначала if основанный блок Затем то же самое, но преобразуется в регистр переключения типов. (извините за плохие красные волнистые маркеры Resharper, Resharper пока не понимает этого) К…
06 янв '17 в 11:09
4 ответа

Равенство и полиморфизм

С двумя неизменяемыми классами Base и Derived (который является производным от Base) я хочу определить равенство так, чтобы равенство всегда полиморфно - то есть ((Base)derived1).Equals((Base)derived2) позвоню Derived.Equals операторы == а также != …
26 фев '19 в 01:13
2 ответа

Использование функций C# 7 внутри View в проекте ASP.NET MVC Core

Я искал другие вопросы, связанные с этим, но ни один, кажется, не совсем то, что я ищу. У меня есть сайт, работающий на ASP.NET Core с новой структурой проекта в VS2017. Файлы кода, использующие функции C#7, компилируются нормально. Но попытка испол…
16 мар '17 в 20:38
2 ответа

Приведение нового кортежа к старому дает ошибку компиляции

С кодом ниже, class Program { static void Main(string[] args) { Tuple&lt;int, int&gt; test = TupleTest(); } static (int, int) TupleTest() { return (1, 2); } Я получаю следующую ошибку времени компиляции. Ошибка CS0029 Невозможно неявно преобразовать…
23 апр '17 в 21:53
1 ответ

Почему я не могу вернуть ссылку на значение словаря?

public class PropertyManager { private Dictionary&lt;ElementPropertyKey, string&gt; _values = new Dictionary&lt;ElementPropertyKey, string&gt;(); private string[] _values2 = new string[1]; private List&lt;string&gt; _values3 = new List&lt;string&gt;…
03 янв '18 в 10:39
1 ответ

Перечислитель для класса, составляющего Список

Я имею: public class MyList : IEnumerable&lt;MyItem&gt;, IEnumerable { private List&lt;MyItem&gt; list = new List&lt;MyItem&gt;(); IEnumerator IEnumerable.GetEnumerator() { ??? } IEnumerator&lt;MyItem&gt; IEnumerable&lt;MyItem&gt;.GetEnumerator() { …
22 авг '18 в 01:54
1 ответ

Синтаксис регистра переключателя указывает тип данных

Сегодня на работе я делал обзор кода, как и сейчас, и снова, но сегодня я увидел синтаксис, которого раньше не видел. Я искал в интернете это безрезультатно, и что еще более интересно, что, несмотря на использование той же версии Visual Studio, то е…
28 апр '17 в 14:16
2 ответа

Нулевой оператор объединения (??) с возвратом

Мне было интересно, почему это можно сделать в C# 7.0: int? test = 0; int test2 = test ?? throw new Exception("Error"); ..но не это: int? test = 0; int test2 = test ?? return; Кто-нибудь может это объяснить?
14 окт '18 в 09:18
2 ответа

Назначение локальных функций делегатам

В C# 7.0 вы можете объявлять локальные функции, то есть функции, живущие внутри другого метода. Эти локальные функции могут обращаться к локальным переменным окружающего метода. Поскольку локальные переменные существуют только во время вызова метода…
13 дек '16 в 20:16
1 ответ

Могу ли я использовать (строка a, строка b) синтаксис кортежа с.NET 4.5.2?

Я создаю приложение в Visual Studio 2017, предназначенное для работы на компьютере под управлением Windows XP, но возможность использовать литералы кортежа C# 7.0 была бы идеальным компонентом для моего решения. Я думал, что могу просто добавить два…
22 сен '17 в 22:51
1 ответ

C# 7.0 ValueTuples против анонимных типов

Глядя на новые C# 7.0 ValueTuples, мне интересно, будут ли они полностью заменены Anonymous Types, Я это понимаю ValueTuples являются структурами и, следовательно, ведут себя немного иначе, чем Anonymous Types которые являются классами. Однако я не …
15 дек '16 в 13:09
2 ответа

Синтаксический оператор нечетного возврата

Я знаю, что это может звучать странно, но я даже не знаю, как искать этот синтаксис в Интернете, а также я не уверен, что именно означает. Итак, я просмотрел некоторый код MoreLINQ, а затем заметил этот метод public static IEnumerable&lt;TSource&gt;…
26 июл '17 в 10:00
2 ответа

Обнуляемый оператор в объявлении foreach с использованием C#7

Я смотрел на этот пример кода в C# 7.0 и я не был уверен в том, что происходило под капотом и производительности этой петли. foreach (var c in text ?? throw new ArgumentNullException(nameof(text))) { ... } Мои вопросы: Условный оператор получает уда…
16 фев '17 в 03:16
1 ответ

C# Неизменность создания глобального магазина

Для моего проекта я пытаюсь создать единое глобальное хранилище для обслуживания изменяемого состояния, например: // Immutable program state sealed public class State : IEquatable&lt;State&gt; { public State(ClientsConnections clientsConnections, Im…
16 авг '18 в 23:13
4 ответа

Шаблон сборки TFS 2015 не может собрать функции C#7

Мы используем TFS 2015 в качестве нашего сервера сборки для непрерывной интеграции с определениями сборки xaml. TfvcTemplate12.xaml - это шаблон процесса сборки, который мы используем. Когда вышла Visual Studio 2015, мы обновили шаблоны сборки, уста…
27 мар '17 в 22:37
1 ответ

Почему в C# 7 ValueTuples реализован метод Equals, а не оператор двойного равенства?

Рассмотрим следующий фрагмент кода: var tuple1 = (7, "foo"); var tuple2 = (7, "foo"); var tuple3 = (42, "bar"); Assert.That(tuple1.Equals(tuple2), Is.True); //This passes Assert.That(tuple1.Equals(tuple3), Is.False); //This passes Assert.That(tuple1…
10 фев '17 в 22:59
2 ответа

C#7 ref return: что остается в памяти: экземпляр класса или свойство ref ref?

public ref int GetData() { var myDataStructure = new MyDataStructure(); return ref myDataStructure.Data; } public class MyDataStructure { private int _data; public ref int Data =&gt; ref _data; } Это использует новую функцию возврата C#7. После возв…
17 фев '18 в 12:29
1 ответ

VB.NET эквивалент для C# 7 Тип сопоставления

Есть ли VB.NET, эквивалентный этому? Обратите внимание, в частности, на bmp в примере кода. public void MyMethod(Object obj) { if (obj is Bitmap bmp) { // ... } } Или короткий синтаксис сопоставления с is является эксклюзивным для C#? РЕДАКТИРОВАТЬ:…
26 ноя '17 в 11:09