Задать вопрос
  • Может ли два exe-файла x86 и x64 использовать общие dll?

    xpert13
    @xpert13
    Full Stack Developer
    Не можете, разрядность исполняемого файла и используемых ею библиотек должны совпадать. Исполняемый файл делит с библиотекой своё адресное пространство, а у x86 и x64 разный размер ячейки памяти, они не смогут правильно работать в одном адресном пространстве.
    Ответ написан
    Комментировать
  • Связь многие ко многим в MS SQL для чего?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Простейший пример - сотрудники и группы. Сотрудник может входить в несколько групп, в группу может входить несколько сотрудников.
    Ответ написан
    Комментировать
  • Связь многие ко многим в MS SQL для чего?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега SQL
    Седой и строгий
    Пример из реальной жизни: Есть таблица товаров интернет-магазина и есть таблица акций, действующих на товары. Любой товар может участвовать в множестве акций и любая акция может включать множество товаров. И нет никакого способа хранить информацию об этих связях, кроме использования дополнительной таблицы.
    Ответ написан
    Комментировать
  • Разница между get и return(Глупый вопрос)?

    @JihadTV
    То ли я от шарпа отстал, то ли второе вообще непонятно что.
    Первое -свойство , имеющее только геттер.
    Ответ написан
    Комментировать
  • C# в качестве backend под linux, стоит ли?

    @FoxInSox
    Стоит ли сейчас C# использовать на сервере?

    Конечно.
    Ответ написан
    Комментировать
  • Чем отличается Visual C# от C#?

    manul
    @manul
    Язык один - C#
    Visual C# - это компонент в среде Visual Studio, отвечающий за его поддержку.
    Ответ написан
    Комментировать
  • Где почитать информация по провайдерам данных?

    ODP.NET это надстройка над ADO.NET?

    Ну у вас и каша в голове, неудивительно, что вы ничего не можете найти.

    ADO.NET - это прежде всего набор интерфейсов, обеспечивающих написание кода, работающего с реляционными данными таким образом, что он минимально зависит (или не зависит вообще) от конкретной используемой СУБД. ADO.NET это далеко не первая попытка унифицировать интерфейс доступа к базам данных (хотя бы к реляционным), многие крупные вендоры это делали, тот же Борланд.

    С момента появления дотнета как платформы ADO.NET был и остаётся основным способом доступа к реляционным БД из дотнет-приложений. В большинстве случаев нет причин НЕ пользоваться им. Стоит отметить, что хоть сейчас MS советует использовать ORM (с тех пор, как повзрослел Entity Framework) для доступа к данным, ADO.NET никуда не девался, т.к. все известные мне ORM-ми работают также через эти интерфейсы.

    Провайдеров данных существует множество, и существование каждого из провайдеров определяется существованием конкретной СУБД. ODP.NET это не надстройка над ADO.NET, это реализация интерфейсов ADO.NET, способная взаимодействовать с Ораклом. Аналогичные провайдеры существуют и для других популярных СУБД, включая PostgreSQL, DB2, MySQL и даже SQLite. По сути доступность реляционной СУБД на дотнете определяется наличием работоспособного ADO.NET-провайдера.

    Разумеется, конкретный провайдер может добавлять какой-то специфичный функционал, но при этом он должен реализовать все необходимые интерфейсы. Фишка ADO.NET в том, что реально написать такое приложение (разумеется, если пользоваться только стандартными SQL конструкциями), которое ВООБЩЕ не будет зависеть от конкретной СУБД вплоть до того, что нужного провайдера можно будет указывать в конфиг-файле.

    Большинство интерфейсов и классов ADO.NET находятся в пространстве имён System.Data. Условно они делятся на собственно интерфейсы для доступа к БД (важнейшие из них: IDbConnection, IDbCommand, IDataReader) и классы-хелперы, в частности набор классов для организации простейшей in-memory базы данных внутри вашего приложения, которая будет служить кэшем для данных, взятых из основной БД (важнейшие классы: DataSet, DataTable).

    Слышал что есть управляемые и неуправляемые провайдеры данных, в чем отличие?

    Я думаю, что речь идёт об использовании или неиспользовании неуправляемого кода в реализации провайдера данных.

    Почитать об этом можно в любой нормальной книжке по дотнету. Если остались вопросы, пишите в комментарии.
    Ответ написан
    3 комментария
  • Нужно ли вкладываться в IDE для C#?

    kykyryky
    @kykyryky
    >>для комфортной работы
    Хочется отметить, что для комфортной работы студии + решарпера нужен так же довольно мощный комп. Лично меня тормознутость этой парочки перестала раздражать только на i7/16 Гб ram/ssd.
    Ответ написан
    Комментировать
  • Непонятные синие точки в Visual Studio 2013, от куда?

    @Melz
    Это пробелы. Уберите галочку в (если отдельно плагин не стоит)

    Edit -> Advanced -> View White Space
    Ответ написан
    Комментировать
  • Как из списка базового класса сделать список наследуемового класса?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    *Какая-то беда с дизайном.*

    Кастовать вниз по иерархии (downcast) напрямую объекты A в B нельзя, потому что A - это не B. Потому что B содержит какое-то дополнительное состояние (b), которого нет в A и компилятору неизвестно, каким оно должно быть в текущем виде (A конструировался иначе, чем B и как получить валидный B из A - известно лишь программисту).
    Об этом вам пытается рассказать рантайм (Invalid Cast).

    Что касается методов, которые не приводят к желаемому:
    Enumerable.OfType<T>() - фильтрует по типу и законно возвращает пустой список (у вас список A, там действительно нет B)
    Enumerable.Cast<T>() - последовательно делает каст, который невозможен.

    Можно попытаться скопировать объекты в новый список:
    listA.Select(x => new B{ a = x.a }).ToList();

    Но это прокатит лишь в том случае, если мы сможем достать из A необходимые данные для конструирования объекта B. Важно понимать, что это будут именно ДРУГИЕ объекты. Если A некопируем по своей природе, то этот фокус не пройдет.
    Ответ написан
    1 комментарий
  • Async-await и Task.wait() В чем разница?

    @carbon88
    .NET developer/ORM developer
    Task.Wait() будет блокировать вызывающий поток, а await не будет этого делать.
    Так называемый continuation (то что ниже await) будет выполнен после завершения таска, что ожидается через await. При этом вызывающий поток блокироваться не будет и сможет выполнить еще какую-то работу, например, среагировать на нажатие кнопки если это основной поток GUI приложения или если это асп.нет приложение он сможет начать обрабатывать следующий запрос.
    Как только таск выполнится начнется исполнение continuation и в некоторых случаях не гарантируется что это будет тот же поток в котором выполнялся код до await.
    Ответ написан
    Комментировать
  • Цикл foreach при работе с коллекциями и массивами?

    @interlocked
    .NET developer
    Enumerator обычно реализовывается в закрытом вложенном классе, в методах которого вы просто используете экземпляр вашей коллекции. Для написания полноценной коллекции на основе массива можно воспользоваться обобщенными интерфейсами ICollection<T> / IList<T>. Для словарей - IDictionary<TKey, TValue> и т. д. Не соглашусь с предыдущим решением "не создавайте собственные коллекции вообще" - коллекции нужно создавать, стандартные не всегда подходят для реализации некоторых моделей. Например, для WPF есть ObservableCollection<T>, а что если нужен отслеживаемый словарь?
    Ответ написан
    2 комментария
  • Можно ли получить права пользователя Администратор на Windows 7 из кода?

    @serber
    Можно в манифесте приложения указать необходимость прав администратора. В этом случае при запуске будет появляться окно UAC. Пример
    Ответ написан
    1 комментарий
  • Async и Await C# в потоке (Thread) без событий. Нужно ли?

    @Hydro
    C#/.NET Developer
    Async / Await - это сахар для оптимального использования пула потоков, можно обойтись без него, а если нужно использовать все треды на полную катушку, то следует использовать Async / Await.
    Навскидку скажу только такие ситуации, где он необходим:
    1) Чтобы избавиться от синхронных вызовов долгих вычислений в потоках, критичных к скорости выполнения. Как раз частный случай - пример, который описал Haze Max. Но нельзя забывать, что в WPF и WinForms, чтобы после этих вычислений что-то делать с окошком, нужно отмаршалиться обратно в UI поток.
    2) Интенсивный IO - чтобы не останавливать поток, который ждет данные (либо пишет данные) от внешнего ресурса (hdd, сетевая карта например), исполнение кода следует переключать в асинхронный режим, чтобы избавиться от заморозки потока на время ожидания (пока происходит ожидание ответа, тред может выполнить какой-то еще код).
    Ответ написан
    Комментировать
  • Зачем нужна Обратная Польская Запись?

    Что бы избавиться от скобок. Выражение в ОПЗ можно вычислять слева на право, читая посимвольно. При группировке скобками такое невозможно.

    UPD:
    FPU, например, как раз программируется с помощью ОПЗ. Т.е. преобразовав выражение в ОПЗ можно очень легко записать его на ассемблере.
    Ответ написан
    Комментировать
  • Как перенести Sqlite базу данных на удаленный сервер и подключиться к ней?

    Rou1997
    @Rou1997
    MySQL надо использовать, если SQLite то сервер (REST API и т.п.) сами писать будете, в нее не входит сервер.
    Ответ написан
    1 комментарий
  • Как написать расширение метода для EF6?

    andrewpianykh
    @andrewpianykh
    Реализуйте для модели интерфейс IEntity, чтобы в методе расширения использовать ограничение универсального типа:

    public interface IEntity
    {
    	int Id { get; set; }
    }
    
    public class Model : IEntity
    {
    	public int Id { get; set; }        
    	// ...
    }


    public static bool ExistById<T>(this DbSet<T> source, int id) where T : IEntity
    {
    	return source.Count(c => c.Id == id) > 0;
    }
    Ответ написан
    3 комментария