• Почему в var a = new int[1] {5} нет упаковки?

    @kttotto
    пофиг на чем писать
    Я, думаю, Вы что-то не так поняли. Массив, это ссылочный тип и в случае
    var a = new int[1] {5}
    значение переменной a будет лежать в стеке, но значением будет ссылка на место в куче, указывающая на массив интов. Тоже самое касается и
    a = new object[1] {5}

    Упаковка будет происходить со значениями, которые лежат в стеке, а потом копируются в кучу. Например так
    int a = 5;
    var b = (object)a;

    В первой строке мы положили в стек пятерку, а во второй эту пятерку мы помещаем в кучу. Переменная b будет лежать в стеке, значение которой будет указывать на адрес в куче, где лежит тип object, со значением value равным 5. И то, что у объекта поле будет интовое, не означает, что оно будет в стеке.
    Ответ написан
    7 комментариев
  • Как часто приходится использовать built-in хелперы в asp.net?

    @kttotto
    пофиг на чем писать
    Юзают, нужная фича.
    Первое, например тот же select. Толи его руками заполнять каждый option, толи в одну строчку вложиться.
    Второе, это все-таки какая-то типизация разметки данными. Чем меньше твоей ответственности в заполнении разметки данными, тем меньше шансов на ошибку, особенно при последующих изменениях. Поэтому в нужном случае я даже для<a>буду использовать asp тег.
    Ответ написан
    Комментировать
  • ASP.NET MVC 4 перед MVC 5?

    @kttotto
    пофиг на чем писать
    Если просто начать, понять принцип - не большая. Если писать проект - большая. Для изучения стоит смотреть минимум на MVC 5. Но я бы посоветовал сразу asp core.
    Ответ написан
    Комментировать
  • Как работать с базой данных ASP.NET MVC?

    @kttotto
    пофиг на чем писать
    Подключаться надо не к существующей таблице, а к существующей бд. Для этого надо в файле web.config указать в conectionstring путь к бд и соответствующий ей логин/пароль. Если conectionString укажете правильно, то будет соединение с ней. Только еще учтите, что все модели-сущности у Вас должны быть заранее реализованы под эту бд и соответствовать ее схеме.

    Если нужно работать с двумя бд, то создаете два контекста, каждый со своим conectionString к бд.

    Если имеется в виду, что в новой бд руками создали таблицу и заполнили данными, а бд создает ее новую и чистую, значит, где-то ошибка или в имени таблицы, или в том как Вы ее указали в DbSet.
    Ответ написан
  • Можно ли использовать несколько моделей на одной cshml странице?

    @kttotto
    пофиг на чем писать
    Нет. Нужно несколько моделей - инкапсулируй в одну, фасад называется.
    Ответ написан
    Комментировать
  • Как добавить данные в один exe с помощью другого exe?

    @kttotto
    пофиг на чем писать
    Лучше никак не добавлять, а иметь один, разделяемый обеими программами, ресурс. Как вариант - общий файлик с данными.
    Но если, все-таки, есть реальная необходимость извратиться и если говорить о windows forms, то у него есть файл ресурсов, который хранить свои данные в xml и который обычно используют как конфигурационный для запуска приложения, например для локализации приложения. Вот если Вы сможете получить доступ к этому файлу из другого приложения, то сможете его прочитать и подкорректировать как Вам нужно, сцылка. Примеров на C# как читать xml и как в него писать, в инете полно.
    Ответ написан
    Комментировать
  • Хочу "шагать" весь код C# в VS, как это осуществить?

    @kttotto
    пофиг на чем писать
    Самый простой способ, как я считаю, посмотреть что внутри, это через Решарпер и его функцию Decompile methods.
    Находится это options/External Sources и поставить все галочки внутри Navigation to Sources.

    Если без Решарпера, то чтобы дебажить исходники .net, у Вас должны быть скачаны отладочные pdb файлы. Для этого так же нужно сделать некоторые настройки в vs.
    В первую очередь желательно выставить сервер для скачки отладочных символов Tools/options/Debugging/Symbols ставим галочку Microsoft Symbol Servers, можно тут же указать папку для кеширования Ваших символов и нажать кнопку Load all Symbols, чтоб они лишний раз не подгружались каждом запуске проекта.
    Дальше идем в Tools/options/Debugging/General и выставляем галочки Enable .NET Framework source stepping. У Вас сразу спросят, подгрузить ли отладочные символы, на что Вы соглашаетесь. При этом у Вас отключиться опция "только мой код".

    Чтобы дебажить сторонние библиотеки, для этого авторы должны предоставить свои отладочные символы, что я еще не встречал) Хотя есть ресурсы, где народ их выкладывает для общего пользования.

    Недавно я на это вопрос уже отвечал тут
    Ответ написан
    2 комментария
  • Как выбрать элемент, если у него display: none?

    @kttotto
    пофиг на чем писать
    Ищите его после открытия модального окна
    $(".modal").on("shown.bs.modal", function() {
    	// Ищите его здесь
    });
    Ответ написан
    Комментировать
  • Как тестировать методы работающие с приватными или защищенными полями?

    @kttotto
    пофиг на чем писать
    1. Не верно. Вы будете использовать GetWorkers, но тестировать AddWorker. На GetWorkers можете написать отдельный тест.

    PS: Тестировать приватные поля плохая практика. Тестировать нужно ожидаемое поведение доступного из вне метода, т.е. публичные. Тестировать внутреннюю реализацию не нужно, нужно тестировать то, что она даст на выходе.
    Ответ написан
    Комментировать
  • Алгоритм расстановки позиций чисел в игре "пятнашки" - выводит -1. В чём ошибка?

    @kttotto
    пофиг на чем писать
    Самый нормальный способ перемешать, это в готовом массиве в цикле брать порядковый элемент и менять его местами с рандомным. Зачем Вам головняк с двойным циклом?
    var rnd = new Random();
    var arr = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ];
    for(var i; i < arr.Length; i++)
    {
    	var newPosition = rnd.Next(arr.Length);
    	var temp = arr[newPosition];
    	arr[newPosition] = arr[i];
    	arr[i] = temp;
    }


    PS: А для того, чтобы понять что в массиве есть такое число или нет, можно применить linq
    t_numbers.Any(x => x == number)
    И никогда не делайте эту штуку внутри метода
    Random random = new Random();
    Это угрожает созданием одинаковых последовательностей. Объект Random должен быть полем класса, причем статическим.
    Ответ написан
    Комментировать
  • Как сделать автоматическое отображение введенного текста в форме на другое место?

    @kttotto
    пофиг на чем писать
    На каждый текстбокс вешаешь обработчик события "textInput input", снимаешь с него значение и вставляешь в соответствующее поле карточки. Не проверял, но что-то подобие этого
    $("#name").on("textInput input", function (e) {
        var val = $(this).val();
    	$("#nameCard").text(val);
    });
    Ответ написан
    Комментировать
  • Как правильно сделать выборку в этом запросе на asp.net core 2.0? web api?

    @kttotto
    пофиг на чем писать
    var get_like = db.Like.Where(t => t.Text == 'mytext' && t.Two == 'd').Count();
    или
    var get_like = db.Like.Count(t => t.Text == 'mytext' && t.Two == 'd');
    Ответ написан
    Комментировать
  • Правильна ли реализация наследования синглтона?

    @kttotto
    пофиг на чем писать
    Я пользуюсь такой конструкцией, проверенной временем
    public class Singleton<T> where T : class
    {
    	private static readonly Lazy<T> _instance = new Lazy<T>(() => (T)typeof(T).GetConstructor(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public, null, new Type[0], null).Invoke(null), true);
    
    	public static T Instance => _instance.Value;
    }
    
    public sealed class CustomSingleton : Singleton<CustomSingleton>
    {
    }
    
    var single = CustomSingleton.Instance
    Ответ написан
    Комментировать
  • Как обращаться к конкретному элементу списка по двум ключам без перебора списка?

    @kttotto
    пофиг на чем писать
    Можно слегка извратится и сделать индексатор. Что-то подобие этого
    public class Pixel
    {
    	public int X {get;set}
    	public int Y {get;set}
    	public string Text {get;set}	
    }
    
    public class LPixels
    {
    	public List<Pixel> ListPixels = new List<Pixel>();
      
    	public Pixel this[int x, int y]
    	{
    		get
    		{
    			return ListPixels.FirstOrDefault(px => px.X == x && px.Y == y);
    		}
    		set
    		{
    			var point = ListPixels.FirstOrDefault(px => px.X == x && px.Y == y);
    			if(point != null)
    			{
    				point.Text = value.Text;
    			}
    			else
    			{
    				var newPoint = new Point
    				{
    					X = x;
    					Y = y;
    					Text = value.Text;
    				}
    				
    				ListPixels.Add(newPoint);
    			}			
    		}
    	}
    }
    
    var lpixels = new LPixels();
    var result = lpixels[1, 2];
    lpixels[1, 2] = new Point { Text = "Test" };
    Ответ написан
    Комментировать
  • Как посмотреть исходный код .NET в Visual studio?

    @kttotto
    пофиг на чем писать
    Options/Debugging/General поставить галочку в "enable .net framework source stepping". Сразу начнется закачка PDB файла с исходниками. Учтите только что весят они не мало, и нужно будет достаточно места на жестком.

    PS: Если Вы хотите дебажить .net, то нужно сделать Эти настройки.
    Если же Вы хотите просто навигацию по исходнику, тот тут сложнее. Для нормальной навигации нужны ссылки в метаданных на исходники. Это сделали только для core2, но со временем обещают добавить для всех версий. Лично я пользуюсь в решарпере настройкой "navigation to source/decompile methodes", но как вариант есть расширение для vs Ref12, в этом случае, при got to defition в браузере открывается страница на https://referencesource.microsoft.com с исходником.
    Подробнее здесь
    Ответ написан
    Комментировать
  • Как сделать несколько условий в if и чтобы они все выполнялись?

    @kttotto
    пофиг на чем писать
    Кажется все забыли, что есть два варианта для "И", так же как и для "ИЛИ".
    Первый вариант "&" : будет проверена и левая, и правая части, не зависимо от того, что вернет левая.
    Второй вариант "&&" : правая часть будет проверена только в том случае, если левая вернет true.

    Поэтому в Вашем варианте, если Вы хотите, чтобы проверка в любом случае выполнилась и слева, и справа, то
    if(function1 & function2){
         // если обе возвращают true что то делаем. 
    }
    Ответ написан
    4 комментария
  • Как использовать метод Sort list'а содержащего экземпляры структуры?

    @kttotto
    пофиг на чем писать
    Комментировать
  • Почему нельзя присвоить новое значение переменной в классе?

    @kttotto
    пофиг на чем писать
    Потому, что синтаксис языка C# этого не разрешает.
    Ответ написан
    Комментировать
  • Почему при if (6 || 5 && (x = 1)) переменная x не равна единице?

    @kttotto
    пофиг на чем писать
    Может потому что Вы х не сравниваете с 1, а присваиваете единицу иксу?
    Ответ написан
    2 комментария