new SerialPort(selectedItem.ToString(), 9600, Parity.None, 416, StopBits.One);
using System;
using System.Windows.Forms;
class Sample
{
public static void Main()
{
String[] arguments = Environment.GetCommandLineArgs();
MessageBox.Show(String.Join(", ", arguments));
}
}
Контракты на интерфейсах
и абстрактных методах
Мощной возможностью контрактов кода является добавление условий к членам интерфейса и абстрактным методам. Двоичное средство перезаписи автоматически привязывает эти условия к конкретным реализациям членов. Специальный механизм позволяет указывать отдельный класс контракта для интерфейсов и абстрактных методов, поэтому можно написать тела методов для хранения условий контрактов. Ниже показано, как это работает:
[ContractClass (typeof (ContractForITest))]
interface ITest
{
int Process (string s);
}
[ContractClassFor (typeof (ITest))]
sealed class ContractForITest : ITest
{
int ITest.Process (string s) // должна использоваться явная реализация.
{
Contract.Requires (s != null);
return 0; // Фиктивное значение, чтобы удовлетворить компилятор.
}
}
Обратите внимание, что для удовлетворения компилятора мы должны вернуть значение при реализации метода ITest.Process. Однако код, возвращающий 0, выполняться не будет. Вместо этого двоичное средство перезаписи извлекает из метода только условия и связывает их с реальными реализациями ITest.Process. Это значит, что экземпляры класса контракта никогда в действительности создаваться не будут (и любые конструкторы, которые вы напишете, также выполняться не будут). Внутри блока контракта можно реализовать присваивание временной переменной, чтобы проще было ссылаться на другие методы интерфейса. Например, если в интерфейсе ITest также определено свойство Message типа string, в ITest.Process можно было бы написать следующий код:
int ITest.Process (string s)
{
ITest test = this;
Contract.Requires (s != test.Message);
...
}
Это проще, чем:
Contract. Requires (s != ((ITest)this).Message);
(Простое использование this Message работать не будет, т.к. свойство Message должно быть реализовано явно.) Процесс определения классов контрактов для абстрактных классов выглядит точно так же за исключением того, что класс контракта должен быть помечен как abstract вместо sealed.
-F
отправка формы@-
@ означает что данные отправляютcя как приложенный файл, а минус что отправляемые данные берутся из STDIN (в данном случае то что сгенерировалось после echoprint-codegen ./recorded.mp3 10 20
), подробнее можно почитать man curl
-F, --form
(HTTP) This lets curl emulate a filled-in form in which a user
has pressed the submit button. This causes curl to POST data
using the Content-Type multipart/form-data according to RFC
2388. This enables uploading of binary files etc. To force the
'content' part to be a file, prefix the file name with an @
sign. To just get the content part from a file, prefix the file
name with the symbol <. The difference between @ and < is then
that @ makes a file get attached in the post as a file upload,
while the < makes a text field and just get the contents for
that text field from a file.
Example, to send your password file to the server, where 'pass‐
word' is the name of the form-field to which /etc/passwd will be
the input:
curl -F password=@/etc/passwd www.mypasswords.com
To read content from stdin instead of a file, use - as the file‐
name. This goes for both @ and < constructs.
using System;
namespace strsort
{
class Program
{
public static void Main(string[] args)
{
//данный массив строк
string[] m = {"a","abc","ab"};
Console.WriteLine("Массив до сортировки:");
foreach (string s in m)
Console.WriteLine(s);
Array.Sort(m);
Console.WriteLine();
Console.WriteLine("Массив после сортировки:");
foreach (string s in m)
Console.WriteLine(s);
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
}
string hex = 10008.ToString("x2");
int num = 255;
string hex = num.ToString("x2");
// переменная hex будет иметь значение ff
hex = num.ToString("X2");
// переменная hex будет иметь значение FF
byte[] data = new byte[] {1,2,3,4,5,128,255};
string hex = String.Join(" ", data.Select(b=> b.ToString("x2")).ToArray());
Console.WriteLine(hex);
01 02 03 04 05 80 ff
string data = "Привет, человеки!";
string hex = String.Join(" ", data.ToString().Select(ch => ((byte)ch).ToString("x2")).ToArray());
Console.WriteLine(hex);
string data = "Привет, человеки!";
string hex = String.Join(" ", System.Text.Encoding.GetEncoding(1251).GetBytes(data).Select(b => b.ToString("x2")).ToArray());
Console.WriteLine(hex);
cf f0 e8 e2 e5 f2 2c 20 f7 e5 eb ee e2 e5 ea e8 21
string data = "Привет, человеки!";
string hex = String.Join("-", System.Text.Encoding.GetEncoding(1251).GetBytes(data).Select(b => b.ToString("x2")).ToArray());
Console.WriteLine(hex);
cf-f0-e8-e2-e5-f2-2c-20-f7-e5-eb-ee-e2-e5-ea-e8-21
Form2 f = new Form2();
f.OnConcreteButtonPressed += doSomething;
f.Show(); // лучше f.ShowDialog();