Разница между a: = b и a = b [duplicate]

Ссылка NullReferenceException или Object, не установленная на экземпляр объекта, возникает, когда объект класса, который вы пытаетесь использовать, не создается. Например:

Предположим, что у вас есть класс с именем Student.

public class Student
{
    private string FirstName;
    private string LastName;
    public string GetFullName()
    {
        return FirstName + LastName;
    }
}

Теперь рассмотрим другой класс, в котором вы пытаетесь получить полное имя учащегося.

public class StudentInfo
{      
    public string GetStudentName()
    {
        Student s;
        string fullname = s.GetFullName();
        return fullname;
    }        
}

Как видно из вышеприведенного кода, оператор Student s - объявляет только переменную типа Student, обратите внимание, что класс Student не создается в этой точке. Следовательно, когда выполняется выполнение инструкции s.GetFullName (), она выкинет исключение NullReferenceException.

92
задан Péter Török 17 March 2011 в 21:27
поделиться

9 ответов

http://en.wikipedia.org/wiki/Equals_sign#In_computer_programming

В языках программирования компьютера знак равенства обычно обозначает либо логический оператор, проверить равенство значений (например, как в Pascal или Eiffel), что согласуется с использованием символа в математике или оператором присваивания (например, как на C-подобных языках). Языки, делающие прежний выбор, часто используют знак двоеточия (: =) или ≔ для обозначения своего оператора присваивания. Языки, использующие последний выбор, часто используют знак двойного равенства (==) для обозначения своего логического оператора равенства.

Примечание: Я нашел это, выполнив поиск colon equals operator

90
ответ дан drudge 4 September 2018 в 08:30
поделиться

Во многих книгах CS он используется как оператор присваивания, чтобы отличить от оператора равенства =. Однако во многих языках высокого уровня назначение = равно равенству ==.

0
ответ дан gailbear 4 September 2018 в 08:30
поделиться

Это оператор присваивания в Паскале и часто используется в доказательствах и псевдокоде. Это то же, что и = на языках C-диалектов.

Исторически в документах по информатике использовались = для сравнений сравнений и для присвоений. Паскаль использовал :=, чтобы встать на жесткую левую стрелку. C пошел в другом направлении и вместо этого решил использовать операторы = и ==.

41
ответ дан John Kugelman 4 September 2018 в 08:30
поделиться
0
ответ дан Master James 4 September 2018 в 08:30
поделиться

В статически типизированном языке Go := инициализируется и присваивается за один шаг. Это делается для того, чтобы допускать интерпретируемое создание переменных на скомпилированном языке.

// Creates and assigns
answer := 42

// Creates and assigns
var answer = 42
21
ответ дан Matias Forbord 4 September 2018 в 08:30
поделиться

В Algol и его потомках, таких как Pascal и Ada, были использованы эквиваленты Colon, так как он приближается к символу слева. A / -эквиваленты для сравнения были начаты с языка С.

В Prolog нет различия между назначением и тестом равенства.

-1
ответ дан Michael 4 September 2018 в 08:30
поделиться

Некоторые языки используют := в качестве оператора присваивания.

4
ответ дан Mike Lewis 4 September 2018 в 08:30
поделиться

Это старый (паскаль) синтаксис для оператора присваивания. Он будет использоваться так:

a := 45;

Он может быть и на других языках, возможно, аналогичным образом.

0
ответ дан mklauber 4 September 2018 в 08:30
поделиться

Другая интерпретация из-за пределов мира языков программирования исходит от Wolfram Mathworld и др.:

Если A и B равны по определению (т. е. A определяется как B), то это записывается символически как A = B, A: = B или иногда A≜B.

http://mathworld.wolfram.com/Defined.html

https://math.stackexchange.com/questions/182101/appro-notation-equiv-versus

4
ответ дан RBV 4 September 2018 в 08:30
поделиться
Другие вопросы по тегам:

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