Каково различие между членской переменной и локальной переменной?

Это, кажется, комплексное, современное решение:

https://github.com/matthewhudson/device.js

Он обнаруживает несколько платформ, смартфон против таблеток и ориентации. Он также добавляет классы в тег BODY, поэтому обнаружение происходит только один раз, и вы можете прочитать, на каком устройстве вы работаете, с помощью простой серии функций hasQlass jQuery.

Проверьте это ...

[ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: я не имею ничего общего с человеком, который написал это.]

23
задан Lance Roberts 21 December 2010 в 20:10
поделиться

5 ответов

Переменная-член является членом типа и принадлежит состоянию этого типа. Локальная переменная не является членом типа и представляет собой локальное хранилище, а не состояние экземпляра данного типа.

Однако все это очень абстрактно. Вот пример C #:

class Program
{
    static void Main()
    {
        // This is a local variable. Its lifespan
        // is determined by lexical scope.
        Foo foo;
    }
}

class Foo
{
    // This is a member variable - a new instance
    // of this variable will be created for each 
    // new instance of Foo.  The lifespan of this
    // variable is equal to the lifespan of "this"
    // instance of Foo.
    int bar;
}
22
ответ дан 29 November 2019 в 01:01
поделиться

Проблема в том, что SHA256Managed читает 4096 байт за раз (наследуется от FileStream и переопределяет Прочтите (byte [], int, int) , чтобы узнать, сколько он читает из файлового потока), что слишком мало для буфера для ввода-вывода диска.

Для ускорения работы (2 минуты для хеширования 2 ГБ файл на моем компьютере с SHA256, 1 минута для MD5) оберните FileStream в BufferedStream и установите размер буфера разумного размера (я пробовал с буфером ~ 1 МБ):

36
ответ дан 29 November 2019 в 01:01
поделиться

Существует два типа переменных-членов: экземплярные и статические.

Переменная экземпляра существует до тех пор, пока существует экземпляр класса. Для каждого экземпляра будет одна копия.

Статическая переменная существует до тех пор, пока класс. Для всего класса существует одна его копия.

Локальная переменная объявляется в методе и действует только до тех пор, пока метод не вернет:

public class Example {
    private int _instanceVariable = 1;
    private static int _staticvariable = 2;

    public void Method() {
        int localVariable = 3;
    }
}

// Somewhere else

Example e = new Example();
// e._instanceVariable will be 1
// e._staticVariable will be 2
// localVariable does not exist

e.Method(); // While executing, localVariable exists
            // Afterwards, it's gone
5
ответ дан 29 November 2019 в 01:01
поделиться
public class Foo
{
    private int _FooInt; // I am a member variable


    public void Bar()
    {
       int barInt; // I am a local variable
       //Bar() can see barInt and _FooInt
    }

    public void Baz()
    {
       //Baz() can only see _FooInt
    }
}
1
ответ дан 29 November 2019 в 01:01
поделиться

Переменная-член принадлежит объекту ... чему-то, что имеет состояние. Локальная переменная просто принадлежит таблице символов той области, в которой вы находитесь. Однако они будут представлены в памяти почти так же, как компьютер не имеет понятия о классе ... он просто видит биты, которые представляют инструкции. И локальные переменные, и переменные-члены могут находиться в стеке или куче.

0
ответ дан 29 November 2019 в 01:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: