powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# vNext
19 сообщений из 19, страница 1 из 1
C# vNext
    #38495309
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The Future of C# with Mads Torgersen

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
//primary constructors - 
public class Point(int x, int y) { }
//read only auto-properties - 
public int X { get; } = x;
//static type using statements - 
using System.Math;
//property expressions - 
public double Distance => Sqrt(X * X + Y * Y);
//method expressions - 
public Point Move(int dx, int dy) => new Point(X + dx, Y + dy);
//params for enumerables - 
public Point Average(params IEnumerable<Point> points) { }
//monadic null checking - 
if (points?.FirstOrDefault()?.X ?? -1) { }
//constructor type parameter inference - 
var t = new Tuple(1,2); // infers Tuple<T1, T2>
//inline declarations for out params - 
public void Foo(out var x, out var y) { }



Интересные вещи.
...
Рейтинг: 0 / 0
C# vNext
    #38495382
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вероятно property expressions и method expressions будут полезны. Ещё можно было бы сделать видимость анонимных классов за пределами метода, им бы цены не было. Как-то так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
class MyClass1
{
    public IEnumerable<class Entity> GetData()
    {
        return from v in src select new { A = v.a, B = v.B };
    }
}

class MyClass2
{
    public void Execute()
    {
        MyClass1.Entity r = new MyClass1().GetData().First();
    }
}
...
Рейтинг: 0 / 0
C# vNext
    #38495435
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО полезно:
property expressions
method expressions
monadic null checking

Да и Алексей К правильно говорит, хотелось бы видеть что-то вроде return IEnumerable<var>

Остальное от лукавого
...
Рейтинг: 0 / 0
C# vNext
    #38495443
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Остальное от лукавогоИнициализатор в автосвойствах не помешает.
...
Рейтинг: 0 / 0
C# vNext
    #38495662
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нахлобуч,

Код: c#
1.
2.
//monadic null checking - 
if (points?.FirstOrDefault()?.X ?? -1) { }



жду уже тыщачу лет.

а вот это

Код: c#
1.
2.
//primary constructors - 
public class Point(int x, int y) { }



имхо, какая-то ненужная хрень.
...
Рейтинг: 0 / 0
C# vNext
    #38496177
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,
ну анонимные можно вытащить наружу через IEnumerable<T> GetData<T>(T t)
а вот ( where T:) ограничение можно было бы расширить, иногда этого не хватает
...
Рейтинг: 0 / 0
C# vNext
    #38496185
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиАлексей К,
ну анонимные можно вытащить наружу через IEnumerable<T> GetData<T>(T t)
а вот ( where T:) ограничение можно было бы расширить, иногда этого не хватаетАнонимный тип должен быть описан внутри метода GetData. Это в первую очередь нужно, чтобы не требовалось описывать классы результатов LINQ запросов. Тогда одним существенным недостатком LINQ по сравнению с SQL станет меньше.
...
Рейтинг: 0 / 0
C# vNext
    #38496189
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиАлексей К,
ну анонимные можно вытащить наружу через IEnumerable<T> GetData<T>(T t)
а вот ( where T:) ограничение можно было бы расширить, иногда этого не хватает

интересно как? что именно не хватает?
...
Рейтинг: 0 / 0
C# vNext
    #38496237
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
ну например where T:int
или where T:new { A = 2, B = "" }
...
Рейтинг: 0 / 0
C# vNext
    #38496266
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
авторинтересно как?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
  class MyClass1
    {
        public  IEnumerable<T> GetData<T>(T t) 
        {
        
            while (true)
            {
                yield return (T)Activator.CreateInstance(typeof(T), 100,100,"SDFSD");
            }
        }
    }

    class MyClass2
    {
        public static void Execute()
        {
            var val= new MyClass1().GetData(new{s=4,ss=4,sss="SFDFF"}).First().ss;
        }
    }


...
Рейтинг: 0 / 0
C# vNext
    #38496363
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степину например where T:int

бессмысленное утверждение. запишите сразу вместо T — int. От int не может быть производных.


Где-то в степиили where T:new { A = 2, B = "" }

предъявляете требование к конструктору? ничего не говорите о типе. тоже бред имхо.

по поводу активатора, это уже попахивает DI, хотите нативную реализацию? ))
...
Рейтинг: 0 / 0
C# vNext
    #38496402
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиhVostt,
ну например where T:int
или where T:new { A = 2, B = "" }

а контрактами такое не делается?
...
Рейтинг: 0 / 0
C# vNext
    #38496570
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
Ну давай в контексте нахлобуча 15233727 , расширим требования...
public static IEnumerable<IEnumerable<T>> GroupNumeric<T>(this IEnumerable<T> res, T increment) where T:???
Что тут написать, что бы лишнее в зубах не застревало?
Arm79 ,
наверное я не прально пример написал
вот так
авторчто-то вроде return IEnumerable<var>
не это ли хотели?
IEnumerable<T> GetData<T>() where T:new{a=1,b=""}
{
}
...
Рейтинг: 0 / 0
C# vNext
    #38496579
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степине это ли хотели?
IEnumerable<T> GetData<T>() where T:new{a=1,b=""}
{
}

Да, что то вроде, но T:new{a=1,b=""} - уж слишком нелепо выглядит

было бы здорово как-то так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public IEnumerable<var> GetUidls()
{
    string[] array = new string[] {"1 гепнепн", "2 kjbhb", "3 jhbvhjb"};
    return array.Select(a => 
        {
            var p = a.Split(" ", ... RemoveEmptyString);
            return new {Id = int.Parse(p[0]), Uidl = p[1]);
        })
}
...
Рейтинг: 0 / 0
C# vNext
    #38496650
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79было бы здорово как-то так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public IEnumerable<var> GetUidls()
{
    string[] array = new string[] {"1 гепнепн", "2 kjbhb", "3 jhbvhjb"};
    return array.Select(a => 
        {
            var p = a.Split(" ", ... RemoveEmptyString);
            return new {Id = int.Parse(p[0]), Uidl = p[1]);
        })
}

Так не получится. Классу должно быть присвоено имя, чтобы его использовать в других методах/классах.
...
Рейтинг: 0 / 0
C# vNext
    #38496653
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КТак не получится. Классу должно быть присвоено имя, чтобы его использовать в других методах/классах.

да ладно:

foreach (var pair in GetUidls())
{
Console.WriteLine("Id={0}, Uidl={1}", pair.Id, pair.Uidl);
}
...
Рейтинг: 0 / 0
C# vNext
    #38496660
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Алексей КТак не получится. Классу должно быть присвоено имя, чтобы его использовать в других методах/классах.

да ладно:

foreach (var pair in GetUidls())
{
Console.WriteLine("Id={0}, Uidl={1}", pair.Id, pair.Uidl);
}Согласен, так тоже можно.

Вот только интересно, это не делают из-за лени или сложности/невозможности реализации?
...
Рейтинг: 0 / 0
C# vNext
    #38496677
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79,
авторуж слишком нелепо выглядит да оно в первую очередь идет в разрез с с конструкцией обобщения
...
Рейтинг: 0 / 0
C# vNext
    #38496955
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиНу давай в контексте нахлобуча 15233727 , расширим требования...
public static IEnumerable<IEnumerable<T>> GroupNumeric<T>(this IEnumerable<T> res, T increment) where T:???
Что тут написать, что бы лишнее в зубах не застревало?

dynamic иначе не получется вывести эффективный код у компилятора.


Arm79было бы здорово как-то так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public IEnumerable<var> GetUidls()
{
    string[] array = new string[] {"1 гепнепн", "2 kjbhb", "3 jhbvhjb"};
    return array.Select(a => 
        {
            var p = a.Split(" ", ... RemoveEmptyString);
            return new {Id = int.Parse(p[0]), Uidl = p[1]);
        })
}



никакой разницы

public var GetUidls()

один только вонь по поводу var для локальных переменных зашкаливает, а тут вообще народ на Г. изойдётся.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# vNext
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]