Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# vNext / 19 сообщений из 19, страница 1 из 1
10.12.2013, 12:34
    #38495309
Нахлобуч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# vNext
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
10.12.2013, 12:59
    #38495382
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# vNext
Вероятно 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
10.12.2013, 13:17
    #38495435
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# vNext
ИМХО полезно:
property expressions
method expressions
monadic null checking

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

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

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

интересно как? что именно не хватает?
...
Рейтинг: 0 / 0
10.12.2013, 21:29
    #38496237
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# vNext
hVostt,
ну например where T:int
или where T:new { A = 2, B = "" }
...
Рейтинг: 0 / 0
10.12.2013, 22:19
    #38496266
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# vNext
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
11.12.2013, 02:45
    #38496363
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# vNext
Где-то в степину например where T:int

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


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

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

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

а контрактами такое не делается?
...
Рейтинг: 0 / 0
11.12.2013, 10:37
    #38496570
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# vNext
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
11.12.2013, 10:48
    #38496579
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# vNext
Где-то в степине это ли хотели?
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
11.12.2013, 11:23
    #38496650
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# vNext
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
11.12.2013, 11:25
    #38496653
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# vNext
Алексей КТак не получится. Классу должно быть присвоено имя, чтобы его использовать в других методах/классах.

да ладно:

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

да ладно:

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

Вот только интересно, это не делают из-за лени или сложности/невозможности реализации?
...
Рейтинг: 0 / 0
11.12.2013, 11:37
    #38496677
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# vNext
Arm79,
авторуж слишком нелепо выглядит да оно в первую очередь идет в разрез с с конструкцией обобщения
...
Рейтинг: 0 / 0
11.12.2013, 13:46
    #38496955
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C# vNext
Где-то в степиНу давай в контексте нахлобуча 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
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# vNext / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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