Блог программиста
26 добавил: 4/2/2013 5:36:35 PM отредактировал: 4/2/2013 5:42:16 PM

Наследование в JavaScript вкратце ( с самым простым и понятным примером prototype ):
//функция-метод
function computearea(){
var area=this.radius*this.radius*3.14
return area
}


/*функция ниже создает новый объект и присваивает ему метод созданный ранее*/
function circle(r){
//свойство, которое хранит радиус
this.area=computearea
}

//далее где-то в коде можно создать объект и вызвать метод
var mycircle=new circle(20)
//alerts 1256
alert("area="+mycircle.area())


С помощью портотипов можно добавить к уже существующим экземплярам класса новые методы или свойства
circle.prototype.pi=3.14159

// создаем новый метод
function alertmessage(){
alert(this.pi)
}
circle.prototype.alertpi=alertmessage

Сейчас все сущности содержат метод alertmessage() с псевдонимом alertpi – в нашем случае выходит, что и объект mycircle теперь содержит метод alertpi() которые вызывает alertmessage() !

А как вас зовут?

Добавить комментарий

27 добавил: 5/16/2013 1:42:20 PM отредактировал: 5/16/2013 1:46:37 PM

Контекстно-зависимое ключевое слово out используется в двух контекстах:
    В качестве модификатора параметра в списках параметров
    В объявлениях параметров универсального типа в интерфейсах и делегатах

Out - ковариантность
// ковариантный интерфейс
interface ICovariant<out R> { }

// расширение ковариантного интерфейса
interface IExtCovariant<out R> : ICovariant<R> { }

// реализация ковариантного интерфейса
class Sample<R> : ICovariant<R> { }

class Program
{
    static void Test()
    {
        ICovariant<object> iobj = new Sample<object>();
        ICovariant<String> istr = new Sample<String>();

        // Можно приравнять istr к iobj потому как
        // интерфейс ICovariant ковариантен.

        iobj = istr;
    }
}


Модификаторы параметра ref и out

Параметры в C# передаются ByVal т.е. по значению по умолчанию. Если нужно передать по ссылке, то нужно использовать ключевые слова ref и out
Параметры, объявленные с ключевым словом out, ведут себя точно так же, как и ref-параметры за исключением того, что в качестве out-параметров можно передавать неинициализированные переменные. Более того, внутри метода out-параметр в любом случае будет рассматриваться как не имеющий начального значения. Метод, получающий out-параметр, обязан присвоить ему значение до того, как передаст управление вызывающей функции.

class RefExample
    {
        static void Method(ref int i)
        {
            i = i + 44;
        }
        static void Main()
        {
            int val = 1;
            Method(ref val);
            Console.WriteLine(val);  // Выводит: 45
        }
    }

class OutExample
{
    static void Method(out int i)
    {
        i = 44;
    }
    static void Main()
    {
        int value;
        Method(out value);   // Значение теперь 44
    }
}


А как вас зовут?

Добавить комментарий

28 добавил: 7/19/2013 5:11:04 PM отредактировал: 10/21/2013 11:05:59 AM

Несколько заметок по C#
Постараюсь в очень краткой форме привести какие-то факты и примеры, которые помогут для подготовки к сдаче экзамена 70-483 Programming in C#

Reflection
В информатике отражение или рефлексия (синоним интроспекция, англ. reflection) означает процесс, во время которого программа может отслеживать и модифицировать собственную структуру и поведение во время выполнения.
Пример:
void Method()
{
    var horse=new Animal();
    var type=horse.GetType();
    var method=type.GetMethod(“Speak”);
    var value=(string)method.Invoke(horse,null);
    // value=”hello”;
}
public class Animal
{
    public string Speak() { return “hello”; }
}

WinMD assemblies
По сути можно создать библиотеку dll, WinMD или даже exe файл в виде assembly.
Различные библиотеки могут иметь один и тот же Namespace, делается это, например, для удобства разработки и сборки в одной компании.
WinMD это по сути dll, но с возможностями cross platform. То есть можно создать WinMD и назначить платформы в которых она будет использоваться. Но по сути добавление каждой платформы сужает возможности сборки ( например WP8, WinRT, WPF… ) WinMD может быть создан на .Net языках или на C++

Как установить сборку в GAC ( Global Assembly Cache ) ?
Для этого необходима утилита Global Assembly Cache tool (Gacutil.exe)
В командной строке вводится команда: gacutil -i
Но необходимо, чтобы сборка сперва была подписана ключом строгого имени с помощью средства SN
Пример создания ключа: «C:\GACKey\GACkey.snk» sn –k

Manage programming database files and symbols
PDB это акроним для Program database file
Файл базы данных программы (PDB) содержит отладочные данные и сведения о состоянии проекта, позволяющие выполнять последовательную компоновку отладочной конфигурации программы.
Риски безопасности с PDB?: Любой, кто имеет доступ к dll/exe может легко совершить реверс инжениринг исходного кода с или без PDB используя такой инструмент, как, например reflector. Так что сокрытие PDB сильно не помогает в вопросах безопасности.
А как вас зовут?

Добавить комментарий

29 добавил: 7/19/2013 5:18:29 PM отредактировал: 7/19/2013 5:25:06 PM

Директивы компилятора ( несколько директив для примера )

#region и #endregion – ограничивают какую-то часть кода и разрешают сворачивание/разворачивание
#define и #undef – define задают true или false соответственно каким-либо значениям
#error – сгенерирует ошибку
Пример использования директив:
#define DEBUG
class MainClass
{
    static void Main()
    {
#if DEBUG
#error DEBUG is defined
#endif
    }
}

 

Использование StringWriter и StringReader для записи и чтения строк ( небольшой примерчик )

     StringWriter strwtr = new StringWriter();

     for(int i=0; i < 10; i++)
     strwtr.WriteLine("This is i: " + i);
     
     StringReader strrdr = new StringReader(strwtr.ToString());
  
     // Сейчас читаем из StringReader.
     string str = strrdr.ReadLine();
     while(str != null) {
     str = strrdr.ReadLine();
     Console.WriteLine(str);

 

А как вас зовут?

Добавить комментарий

31 добавил: 1/8/2014 1:39:00 PM отредактировал: 1/8/2014 4:24:34 PM

Язык C различие между & и *

Никак у меня не получается запомнить различие в C для операций над указателями. Запишу на память:
& - означает взять адрес
* - берет значение по указанному адресу
Простой пример:
int *ptr;
int c = 10;
int *ptr = &c;

А как вас зовут?

Добавить комментарий

«  1 2 3 4 5 6 7  ...  » 

На сайт AlexAlex.ru