cool20141 cool20141

<a href= http://mosros.flybb.ru/viewtopic.php?f=2&t=635>Процесс получения диплома стоматолога: реально ли это сделать быстро?</a>

danilaxxl danilaxxl

CollectableItemData.cs

[CreateMenuItem(fileName = "newItem", menuName = "Data/Items/Collectable", order = 51]

GoloGames GoloGames

vadya_ivan, рад, что вам игра показалась интересной : )

P.S. Кстати уже доступна бесплатная демо-версия в Steam

vadya_ivan vadya_ivan

Визуал, задумка, музыка , механики, все в цель

GoloGames GoloGames

Ato_Ome, спасибо за позитивные эмоции, будем стараться : )

Ato_Ome Ato_Ome

Потрясающий результат, все так четенько, плавненько)
То ли саунд, то ли плавность напомнили мне игрушку World of Goo, удачи вам в разработке и сил побольше дойти до релиза!)

Cute Fox Cute Fox

Graphics are a little cool, good HD content. But this game doesn't cause nary interest me.
However the game is well done.

GMSD3D GMSD3D

Почему действие после всех условий выполняется?
[step another object]

Zemlaynin Zemlaynin

Jusper, Везде, но наугад строить смысла нет. Нужно разведать сперва территорию на наличие ресурсов.

Jusper Jusper

Zemlaynin, а карьеры можно будет везде запихать?
Или под них "особые" зоны будут?

Zemlaynin Zemlaynin

Это так скажем тестовое строительство, а так да у города будет зона влияния которую нужно будет расширять.

Jusper Jusper

А ссылка есть?

Jusper Jusper

Я не оч понял из скриншота, как вообще работает стройка. У игрока будет как бы поле строительства?

split97 split97

в игру нужно добавить время песочные часы в инвентаре, пока бегаешь наберается усталость и ты очень тормозной мобильный враг просто убевает

split97 split97

в игру нужно добавить время песочные часы в инвентаре, пока бегаешь наберается усталость и ты очень тормозной мобильный враг просто убевает

ViktorJaguar ViktorJaguar

Почему я нигде не могу найти нормальный туториал, где покажут как экипировать предмет (например, меч) в определенную (выделенную под оружие) ячейку???

Логотип проекта Программирование

Новведения в C# 6.0

Новведения в C# 6.0 — Программирование — DevTribe: инди-игры, разработка, сообщество

Недавно Microsoft предоставили превью новой версии Visual Studio 2015 и .NET 4.6 для разработчиков. Новая версия .NET содержит новый стандарт C# 6.0, в котором появились некоторые интересные возможности. В этой новости я постараюсь в кратце рассказать о них.

Инициализация свойст со значением по умолчанию

Самая часто используемая функциональность в C# - написание автосвойств. Но, к сожалению, у них был принципиальный недостаток - не было возможности задать значение по умолчанию, и тут приходилось либо отказываться от автосвойства, либо использовать конструктор по-умолчанию, чтобы проинициализировать данные свойства. C# 6.0 решает данную проблему.

csharp - Старый стиль
public class A
{
    public int Id { get; set; }
    public string Name { get; set; }
    
    public A() {
        Id = 5000;
        Name = "Special Name";
    }
}
sharp - Новый стиль
public class A
{
    public int Id { get; set; } = 5000;
    public string Name { get; set; } = "Special Name";
}

Интеграция аргументов в строку

Самый распространнеый метод, который используется для создания форматированных строк это string.Format. В большинстве случаев очень удобно использовать аргументы внесенные отдельно, а наличие ReSharper'а помогает разобраться где и что расположено. Но в C# 6.0 появилась интересная особенность, которая позволяет использовать аргументы непосредственно в самой строке.

csharp - Старый стиль
DisplayName = string.Format("{0}, {1} [{2}] at {3}", emp.FirstName, emp.SecondName, emp.Status, emp.LocationName);
csharp - Новый стиль
DisplayName = "\{emp.FirstName}, \{emp.SecondName} [\{emp.Status}] at \{emp.LocationName}";

Замечание: синтаксис выше работает в превью версии, однако Microsoft собирается поменять синтаксис строки на такой:
((code csharp
DisplayName = $"{emp.FirstName}, {emp.SecondName} [{emp.Status}] at {emp.LocationName}";
))

Использование лямбда выражений для маленьких функций

В C# 6.0 теперь появилась возможность избавиться от написание громоздких конструкций для методов, которые возвращали простые значения, например:

csharp - Старый стиль
public string[] GetAvaliableNames()
{
    return new string[] { "Alexey", "Andrey", "Maxim", "Evgeniy" };
}
csharp - Новый стиль
public string[] GetAvaliableNames() => new string[] { "Alexey", "Andrey", "Maxim", "Evgeniy" };

Импорт статичных классов

Использование статичных методов возможно только с помощью приписки используемого класса, иногда это приводило к написанию с лишком громоздкому коду, особенно когда дело касалось работы с математическими вычислениями. В новой спецификации языка появилась возможность произвести импорт статичного класса и тогда для использования методов статичного класса не требуется приписывать имя этого класса. Давайте рассмотрим пример на основе вычисления простой математической формулы:

csharp - Старый стиль
public static double Distance(double x1, double y1, double x2, double y2)
{
    var dx = x1 - x2;
    var dy = y1 - y2;
    return Math.Sqrt(Math.Pow(dx, 2) + Math.Pow(dy, 2));
}
csharp - Новый стиль
using System.Math;
// ...
public static double Distance(double x1, double y1, double x2, double y2)
{
    var dx = x1 - x2;
    var dy = y1 - y2;
    return Sqrt(Pow(dx, 2) + Pow(dy, 2));
}

Nullable операторы

В C# 6.0 ввели два Nullable оператора ?. и ?:. Данные операторы обеспечивают более простую работу с условими для работы с объектами, которые могут иметь значение null.

csharp - Старый стиль
string location = emp == null ? null : emp.Location;
string departament = emp == null ? null : (emp.Departament == null ? null : emp.Departament.Name);
csharp - Новый стиль
string location = emp?.Location;
string departament = emp?.Departament?.Name;

Выражение nameof

Еще одна из интересных возможностей новой спецификации языка. Раньше при необходимости использовании имен свойств в коде ( например при работе с XAML и WPF ) приходилось создавать строковые константы для этого или писать специальные утилитные методы, которые бы преобразовывали выражения в имена свойств. Сейчас же достаточно просто использовать новое выражение nameof, который вернет имя свойства, метода, класса и т.д.

csharp - Пример
    var emp = new Employee()
    {
        Id = 1,
        Age = 20,
        Location = "Russia",
        Name = "Alexey",
        Department = new Department()
        {
            Id = 1,
            Name = "IT"
        }
    }; 

    Response.Write(emp.Location); //Результат: Russia
    Response.Write(nameof(Employee.Location)); //Результат: Location

Фильтр исключений

Еще одна из ключевых особенностей в новой спецификации - это фильтрация исключений ( "пожалуй это моя любимая особенность теперь будет :3" alexprey ). Благодаря этому теперь можно отлавливать исключения не только по их типу, но так же и добавлять дополнительные проверки, что сделает код более гибким и удобным, а так же избавит от лишних throw;

csharp - Пример
try {
    // Some code
} 
catch (ApiMethodException ex) if (ex.InnerException != null)
{
    // Crash application and notify system admins
}
catch (ApiMethodException ex) if (ex.IsHasParameters) 
{
    // Notify end-user about exception
}
catch (ApiMethodException ex)
{
    // Notify end-user about exception
}
catch (ApiMethodException ex) 
{
    // Log into general logs
}

Инициализация словарей

В C# 6.0 добавили новый способ инициализации словарей данных, теперь это происходит намного удобнее, чем было раньше

csharp - Старый стиль
var map = new Dictionary<string, string>
{
    { "key1", "value1" },
    { "key2", "value2" }
}
csharp - Новый стиль
var map = new Dictionary<string, string>
{
    ["key1"] = "value1",
    ["key2"] = "value2"
}

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


Комментарии



  • 1 (Текущая страница)
  • 2

Уже частично видел где-то, сахарок :3

Hanabishi, да это сейчас быстренько по все интернету расползется, решил тоже не отставать на данную тему)
В принципе для меня тут больше нравится то что они добавили фильтрацию исключений и сменили способ инициализации словарей, к остальному я как-то равнодушен) Хотя пожалуй, мне еще понравилась короткая запись маленьких методов)

DisplayName = "\{emp.FirstName}, \{emp.SecondName} [\{emp.Status}] at \{emp.LocationName}";

Фарш какой-то. Не, этим я пользоваться не буду.

А так много приятной вкусноты. :)

Жаль, что юнити поддерживает старые версии C#.

Мне больше всего Nullable оператор новый понравился.

  • Нативный нуллейбл эт прям то что я люблю. Можно будет забыть про With(x => x.) конструкции
  • Импорт статичных классов - ну неужели!
  • Укороченный формат.стринг - радость
  • Коротенькие лямбда методы - лично меня радует :)

GeneralElConsul, если они хотя бы пятый шарп поддерживать начнут - уже приятно будет с dynamic и async

Kozinaka:

Фарш какой-то. Не, этим я пользоваться не буду.

Лично мне нравится. Никаких тебе String.Format, никаких плюсований ToString между собой. Наверно, недавнее изучение Ruby повлияло. Недостаток вижу только один - локализатору, который пишет эту строчку в каком-то внешнем файле, и не имеет понятия о том, какие переменные будут задействованы в коде, куда проще прописать вместо переменной {0}, {1} и т.д..

lentinant, удобно только для маленьких конструкций, для больших мне лично реально проще выносить с использованием {0}, {1}. Ну и старый вариант никто не отменил

alexprey, так я и не говорил, что старыми методами не будут пользоваться. Недостаток - в плане недостаток нового метода, а не "недостаток того, что старый метод убрали".

У автора проблемы http://tsya.ru/ =(
И все знаки препинания перепутал. Читать реально тяжело.

  • 1 (Текущая страница)
  • 2
Справка