using System;
using System.Linq;
public class Test
{
public static void Main()
{
int[] ScoreCombo = new int[5] { 1, 2, 1, 1, 1 };
foreach(var repeat in ScoreCombo.GroupBy(i => i).Where(g => g.Count() > 1))
Console.WriteLine("Repeat: " + repeat.Key + " (" + repeat.Count() + ")");
}
}
// Аналогично циклу с использованием Any
return !Beads.Any(n => Vector3.Distance(n.position, pos) < 0.1f);
// Можно с использованием All
return Beads.All(n => !Vector3.Distance(n.position, pos) < 0.1f);
false
, если условие будет выполнено хотя бы раз. Any
в этом случае вернёт true
. Поэтому нужно применить инверсию. Также можно переписать операцию использую метод All
. using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApp
{
class Program
{
public class Word
{
public Dictionary<string, string> Langs;
}
static void Main(string[] args)
{
List<string> langsToUse = new List<string> { "en", "pl" };
List<Word> wordsList = new List<Word> {
new Word {
Langs = new Dictionary<string, string> {
{"en", "Dog"},
{"pl", "Pies"},
{"ge", "Hund"},
//... and so on
}},
new Word {
Langs = new Dictionary<string, string> {
{"en", "Kat"},
{"pl", ""},
{"ge", ""}
//... and so on
}},
new Word {
Langs = new Dictionary<string, string> {
{"en", "Car"},
{"pl", ""},
{"ge", ""}
//... and so on
}},
};
// select all words with condition
List<Word> validWords_2 = wordsList.Where(w => langsToUse.All(l => w.Langs[l] != "")).ToList();
}
}
}
/// <summary>Определяет объект, являющийся элементом перечисления</summary>
/// <typeparam name="T">Тип идентификатора для элемента перечисления</typeparam>
public interface IEnum<T>
{
/// <summary>Идентификатор элемента перечисления</summary>
T ID { get; }
// и так далее...
}
/// <summary>Отрасль промышленности</summary>
public sealed class Industry : IEnum<byte>
{
/// <summary>Код отраслевого направления</summary>
public byte Code { get; private set;}
byte IEnum<byte>.ID => Code; // явная реализация интерфейса
// и так далее...
}
/// <summary>Сфера деятельности</summary>
public sealed class Employment : IEnum<int>
{
/// <summary>Тип сферы деятельности</summary>
public int Type { get; private set;}
int IEnum<int>.ID => Type; // явная реализация интерфейса
// и так далее...
}
void UntilSuccess(Action action) {
if (action == null)
throw new ArgumentNullException();
while (true) {
try
{
action.Invoke();
break;
}
catch { Thread.Sleep(300); }
}
}
// Использовать так:
UntilSuccess(() => File.WriteAllText(@"C:\\serv1.txt", "text"));
b1_click
нельзя использовать переменную b1
, т.к. она доступна только внутри функции MyButton
.Button b1
внутри класса, например перед public Form1()
. В функции MyButton
удалить Button
, чтобы осталось b1 = new Button();
.b1_click
использовать ссылку на кнопку, на которую нажали. То есть Button b = (Button) sender;
. Это позволит использовать функцию для любой кнопки, а не только для созданной в MyButton
.Button b = (Button) sender;
b.Text = "Зачем нажал?";
public class WordsArray {
public static string targetword;
public static string[] words = {"EMPTY","EMPTY","EMPTY","EMPTY","EMPTY"};
static string[] targetWordsArray = new string[] {
"fsewt", "vdfrty", "wtwtwtyw", "eyryyr", /* *** */, "wtetre"
}
static string[][] wordsArray = new string[][] {
new string[] { "twetwt", "twtat", "twtwtw", "twtwt", "twtfsdfggs" },
new string[] { "wywyt", "gdghdye", "yeye", "gxcbchd", "hdhey" },
new string[] { "bnvnbvbv", "nvnbn", "nbbnv", "teyee", "tyeyey" },
new string[] { "ghjghjg", "jfjfue", "uruuu", "uetetewre", "rwrwrt" },
/* *** */,
new string[] { "tertet", "tete", "tetete", "tetetert", "trtetrrt" }
}
public static void changeWords(int level) {
if (level >= 0 && level <= 50) {
targetword = targetWordsArray[level];
words = wordsArray[level];
} else {
targetword = "EMPTY";
words = new string[]{ "EMPTY", "EMPTY", "EMPTY", "EMPTY", "EMPTY" };
}
}
ComboBoxItem lbi = ((sender as ComboBox).SelectedItem as ComboBoxItem);
lbi
может находиться null
, если ничего не выбрано, т.к. as
возвращает null
, если преобразование не удалось.Content
у null
. Об этом компилятор и сообщает.null
перед использованием lbi