AbstractProcessor
:using System;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
var list = new List<IProcessor>()
{
new Processor(),
};
IProcessor o = new Processor();
Console.ReadKey();
}
}
interface INode { }
interface IResult { }
interface IProcessor
{
INode Get();
void Print(IResult result);
}
interface IProcessor<out T, in R> : IProcessor where T : class, INode where R : class, IResult
{
new T Get();
void Print(R result);
}
abstract class AbstractProcessor<T, R> : IProcessor<T, R> where T : class, INode where R : class, IResult
{
public abstract T Get();
public abstract void Print(R result);
// Преобразование в не-generic тип
void IProcessor.Print(IResult result)
{
Print(result as R);
}
INode IProcessor.Get()
{
return Get();
}
}
class Node : INode { }
class Result : IResult { }
class Processor : AbstractProcessor<Node, Result>
{
public override Node Get() { return null; }
public override void Print(Result result) {}
}
Dictionary<KeyCode, bool>
вместо нескольких переменных. Это если флаги нужны ещё где-то. А если эти флаги нужны только в Update(), то они и не нужны:int GetKey(KeyCode key) // 1 or 0
{
return Input.GetKeyDown(key) ? 1 : 0;
}
void Update()
{
int hor = GetKey(KeyCode.A) - GetKey(KeyCode.D);
int ver = GetKey(KeyCode.W) - GetKey(KeyCode.S);
transform.position += new Vector3(hor, ver, 0) * CameraSpeed;
}
<?php
namespace MyFunctions;
class Calc
{
public static function add($a, $b)
{
return $a + $b;
}
}
<?php
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use MyFunctions\Calc;
class DefaultController extends Controller
{
/**
* @Route("/", name="homepage")
*/
public function indexAction()
{
$sum = Calc::add(10, 20);
return $this->render('default/index.html.twig', array(
'sum' => $sum,
));
}
}
using System.Collections.Generic;
using System.Linq;
namespace Helpers
{
public static class ArrayHelperExtensions
{
public static IEnumerable<IEnumerable<T>> Split<T>(this T[] array, int size)
{
for (var i = 0; i < (float) array.Length/size; i++)
{
yield return array.Skip(i*size).Take(size);
}
}
}
}
var num = 3;
var parts = listbox1.Items.Split(num);
int x;
string str = Console.ReadLine();
// Вариант с Parse
try
{
x = int.Parse(str);
}
catch (Exception)
{
x = 0;
Console.WriteLine("Неверные данные");
}
// Вариант с Convert
try
{
x = Convert.ToInt32(str);
}
catch (Exception)
{
x = 0;
Console.WriteLine("Неверные данные");
}
// Вариант с TryParse
if (!int.TryParse(str, out x))
{
Console.WriteLine("Неверные данные");
}
// Вариант с TryParse, если ноль устраивает
int.TryParse(str, out x);
<ControlTemplate x:Key="{x:Static MenuItem.TopLevelHeaderTemplateKey}" TargetType="{x:Type MenuItem}">
<Border Name="Border" >
<Grid>
<ContentPresenter Margin="6,3,6,3" ContentSource="Header" RecognizesAccessKey="True" />
<Popup Name="Popup" Placement="Bottom" IsOpen="{TemplateBinding IsSubmenuOpen}" AllowsTransparency="True" Focusable="False" PopupAnimation="Fade">
<Border Name="SubmenuBorder" SnapsToDevicePixels="True" Background="Transparent">
<StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Cycle" />
</Border>
</Popup>
</Grid>
</Border>
</ControlTemplate>
private new Rigidbody2D rigidbody2D;
void Start()
{
rigidbody2D = GetComponent<Rigidbody2D>();
}
class DefaultController extends Controller {
public function showAction($login)
{
$human = $this->get("PeopleService")->getByLogin($login);
}
}
void IgnoreException(Action funcName)
{
try{ funcName(); }
catch(Exception){}
}
void Func()
{
// код
}
void MyMethod()
{
IgnoreException(() =>
{
Func();
});
// Если запустить просто метод без параметров и возвращаемого значения, то можно так:
IgnoreException(Func);
}