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

Johnny
06.11.2016
12:26:56

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
вдруг окажется удобнее

Vinc
06.11.2016
13:43:29

Анатолий
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

ViPLark
06.11.2016
13:48:30

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

ViPLark
06.11.2016
13:59:55

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

ViPLark
06.11.2016
14:14:52

Анатолий
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

Alexey
06.11.2016
16:35:46

Анатолий
06.11.2016
16:36:17
тем временем я решил поставить vs2015, 20гигов. пипец
ну понятно, что включая все сдк
но всё равно впечатляет :)
ещё ни один софт не просил у меня 20 гигов
Эта группа больше не существует