@CSharpChatЭта группа больше не существует

Страница 99 из 1888
Фиолетово
06.11.2016
12:26:49
А еще его проще проверять таким выражением: string.IsNullOrEmpty

Aleksey
06.11.2016
12:27:25
в геттере нет смысла проверять что-то как правило, просто возвращать значение поля байндингу пофиг что связывать, пустую строку, налл или что-то еще

Vinc
06.11.2016
12:40:02
if (d ! = 0 && (n % d) == 0) Console.WriteLine(n + " делится нацело на " + d); между ! и = пробел может быть? опечатки усложняют обучение(

Google
Aleksey
06.11.2016
12:43:34
нельзя пробел там

Vinc
06.11.2016
12:45:36
разобрался

Фиолетово
06.11.2016
12:49:10
Для работы со строками крайне не рекомендую использовать операторы простого сложения строк вида "бла бла " + "Бла бла". В простых примерах во время обучения вроде бы и пофигу, но когда перейдешь к реальной работе, возможно много подводных камней. Поэтому лучше использовать методы класса String вроде string.Concat() или string.Format()

Особенно сильно это ощутимо при работе с путями в файловой системе.

Aleksey
06.11.2016
12:52:53
стоит добавить для работы с путями есть некоторые подходящие методы из классов Path и Directory

Detrous
06.11.2016
12:53:02
А какие именно подводные камни, если не секрет ?

Oleg
06.11.2016
12:53:44
А для большого количества конкатенаций использовать StringBuilder

Фиолетово
06.11.2016
12:54:21
О да. Path, Directory, File, StringBuilder.

Aleksey
06.11.2016
12:54:46
если в строку передаются большие параметры, то сама строка в коде становится огромной и нечитаемой.

Фиолетово
06.11.2016
12:55:24
Подводные камни? Например в работе с теми же путями. От внимания ускользают моменты в работе со служебными символами вроде переноса

Aleksey
06.11.2016
12:55:25
если нужно некоторые строки хранятся в ресурсах или где-то еще, то создается путаница виде "str" + str2 + "str3"

Фиолетово
06.11.2016
12:57:08
Да. Те же рекурсивные методы. Гораздо легче работать, когда ты просто отдаешь String.Format() аргументы и не заморачиваешься за мелкие детали. Всю рутину делает класс

Detrous
06.11.2016
12:58:37
Понял, спасибо)

Google
ViPLark
06.11.2016
13:36:35
Уважаемые знатоки шарпа, подскажите, пожалуйста, есть ли в C# эквивалент конструкции enum (только со строками) или как его можно сделать "правильнее" вместо того, чем пользуюсь сейчас. Суть такова: 1.Нужно, что бы пользователи моего класса при вызове функции выбирали значение параметра только среди ранее определённых; 2.Хочется компактного (красивого) решения. Мой текущий код следующий: public enum AvailableSizes { small, px_34x34, middle, px_50x50, retinaSmall, px_68x68, px_75x75, retinaMiddle, retina50, px_200x200 } public class Account { static Dictionary<AvailableSizes, string> PictureSize = new Dictionary<AvailableSizes, string>()) { { AvailableSizes.small, "islands-small" }, //28×28 пикселей { AvailableSizes.px_34x34 , "islands-34" }, //34×34 пикселей { AvailableSizes.middle, "islands-middle" }, //42×42 пикселей { AvailableSizes.px_50x50, "islands-50" }, //50×50 пикселей { AvailableSizes.retinaSmall, "islands-retina-small" },//56×56 пикселей { AvailableSizes.px_68x68 , "islands-68"}, //68×68 пикселей { AvailableSizes.px_75x75 , "islands-75"}, //75×75 пикселей { AvailableSizes.retinaMiddle , "islands-retina-middle" },//84×84 пикселей { AvailableSizes.retina50 , "islands-retina-50"}, //100×100 пикселей { AvailableSizes.px_200x200 , "islands-200"} //200×200 пикселей }; public string GetAvatarLink(AvailableSizes size) { return $"https://avatars.one-service.ru/get-pic/{default_avatar_id}/{PictureSize[size]}"; } }

Анатолий
06.11.2016
13:37:50
Уважаемые знатоки шарпа, подскажите, пожалуйста, есть ли в C# эквивалент конструкции enum (только со строками) или как его можно сделать "правильнее" вместо того, чем пользуюсь сейчас. Суть такова: 1.Нужно, что бы пользователи моего класса при вызове функции выбирали значение параметра только среди ранее определённых; 2.Хочется компактного (красивого) решения. Мой текущий код следующий: public enum AvailableSizes { small, px_34x34, middle, px_50x50, retinaSmall, px_68x68, px_75x75, retinaMiddle, retina50, px_200x200 } public class Account { static Dictionary<AvailableSizes, string> PictureSize = new Dictionary<AvailableSizes, string>()) { { AvailableSizes.small, "islands-small" }, //28×28 пикселей { AvailableSizes.px_34x34 , "islands-34" }, //34×34 пикселей { AvailableSizes.middle, "islands-middle" }, //42×42 пикселей { AvailableSizes.px_50x50, "islands-50" }, //50×50 пикселей { AvailableSizes.retinaSmall, "islands-retina-small" },//56×56 пикселей { AvailableSizes.px_68x68 , "islands-68"}, //68×68 пикселей { AvailableSizes.px_75x75 , "islands-75"}, //75×75 пикселей { AvailableSizes.retinaMiddle , "islands-retina-middle" },//84×84 пикселей { AvailableSizes.retina50 , "islands-retina-50"}, //100×100 пикселей { AvailableSizes.px_200x200 , "islands-200"} //200×200 пикселей }; public string GetAvatarLink(AvailableSizes size) { return $"https://avatars.one-service.ru/get-pic/{default_avatar_id}/{PictureSize[size]}"; } }
то есть ты хочешь словарь с поименованными свойствами?

чот знакомая проблема

ну как вариант можно использовать статический объект анонимного типа

ViPLark
06.11.2016
13:39:15
Хочу, что бы при вызове функции GetAvatarLink пользователь мог выбирать значения из заранее определённых, а в неком словаре они конвертились в string

Анатолий
06.11.2016
13:39:41
var PictureSizes = {small: "islands-small", big: "islands-big"};

или объявить статический класс

ViPLark
06.11.2016
13:40:14
Анатолий
06.11.2016
13:40:24
с ридонли пропертями, и им задать константные значения

будет этакий самописный енум :)

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

ViPLark
06.11.2016
13:41:46
с ридонли пропертями, и им задать константные значения
Ааа, ну да... И как я раньше не допер??? Спасибо, большое

Анатолий
06.11.2016
13:42:09
только вот как передавать в вызов функции проперть

нет, кажется плохой способ

ViPLark
06.11.2016
13:42:47
нет, кажется плохой способ
В любом случае надо попробовать

вдруг окажется удобнее

var PictureSizes = {small: "islands-small", big: "islands-big"};
Конечно этот вариант прям выглядит на все 100

Анатолий
06.11.2016
13:43:52
Google
ViPLark
06.11.2016
13:44:23
могу ошибаться с синтаксисом
Это не суть, главное идея

Еще раз спасибо

Oleg
06.11.2016
13:45:15
ещё можно определить свой аттрибут, который вешать на значения enum. В аттрибуте хранить строку\etc. + добавить extension метод который умеет доставать значение аттрибута из enum

Анатолий
06.11.2016
13:46:29
о, это уже изящнее

Oleg
06.11.2016
13:46:34
public enum AvailableSizes { [PictureSize("islands-small",Width = 28,Height = 28)] small, ... }

Анатолий
06.11.2016
13:47:06
тогда можно и енумом обойтись :)

Oleg
06.11.2016
13:48:25
единственное ограничение - в аттрибутах нельзя указывать в качестве значений не compile time const

Mikle 9E
06.11.2016
13:52:27
Извините за беспокойство, где чат по C++?

Михаил
06.11.2016
13:52:56
https://telegram.me/ProCxx

Alexey
06.11.2016
13:57:01
Короч, советую когда вставляете большие куски кода в телегу, использовать соответсвующий сниппет http://telegram.wiki/tips:tdesktopcodesnippets

Alexey
06.11.2016
14:00:10
Не

Admin
ERROR: S client not available

Alexey
06.11.2016
14:00:33
Только в пастбин или гист например

и т.д.

Видимо что-то пошло не так

ViPLark
06.11.2016
14:06:06
Видимо что-то пошло не так
Все ок, надо было мне просто сразу код в теги оборачивать

Анатолий
06.11.2016
14:14:48
Тоже красота. Только надо атрибуты освежить в памяти ☺️
public class PictureSizeAttribute : Attribute { public string Value{get;set;} public int Width {get;set;} public int Height {get;set;} } public enum AvailableSizes { [PictureSize(Value = "islands-small",Width = 28,Height = 28)] small,

Google
Анатолий
06.11.2016
14:15:01
вот да

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

в любом случае атрибуты у енума - намного более красивое решение

Alexey
06.11.2016
14:17:41
Ещё добавить ограничение для атрибута [AttributeUsage(AttributeTargets.Field)] и вообще круто

*не является призывом к действию*

ViPLark
06.11.2016
14:19:52
*не является призывом к действию*
Почему же. Очень стоящий совет, да и идея крута! Спасиб

Просто разбираюсь как работать с атрибутами (новичёк же...)

Вячеслав
06.11.2016
16:31:26
Как называется технология или что загуглить, чтоб научиться в wpf делать динамический дизайн, например чтоб в отдельном файле указать сколько мне нужно отобразить групбоксов на форме?

Alexey
06.11.2016
16:34:15
дизайн?

это чат по c# ведь

разве на c# можно писать сайты?

Vyacheslav
06.11.2016
16:35:23
лул

Вадим
06.11.2016
16:35:41
Мб он про asp.net mvc

Анатолий
06.11.2016
16:36:17
тем временем я решил поставить vs2015, 20гигов. пипец

ну понятно, что включая все сдк

но всё равно впечатляет :)

ещё ни один софт не просил у меня 20 гигов

Страница 99 из 1888

Эта группа больше не существует Эта группа больше не существует