class A { • ►! public void MethodQ { i ; Console. Writel_ine( "method"); i } class Program { • / it-юмор :: бездарность :: geek (Прикольные гаджеты. Научный, инженерный и айтишный юмор)

it-юмор geek бездарность 
class A {
• ►! public void MethodQ { i ;	Console. Writel_ine( "method");
i }
class Program {
• static void Main(string[] args) {
]___i	A pj = null;
=	'	iWibaiPBim	<g)
:	}
■j.	Исключение не обработано	i X
System.NullReferenceException: "Ссылка на объект указывает на то, что ты бездарь."
а
Подробнее
class A { • ►! public void MethodQ { i ; Console. Writel_ine( "method"); i } class Program { • static void Main(string[] args) { ]___i A pj = null; = ' iWibaiPBim <g) : } ■j. Исключение не обработано i X System.NullReferenceException: "Ссылка на объект указывает на то, что ты бездарь." а было null.
it-юмор,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,бездарность
Еще на тему
Развернуть
Врядли кто то будет писать " A a = null;", а потом удивлятся откуда ошибка c null. Скорее будет вот так
A a;
a.Method();
А на скриншоте нал как раз написали что бы до бездарей дошло и они бы тоже поржали.
Пользовательские исключения. Это нормально так приколоться над собой в процессе обучения.
А С/С++ вызвал бы метод без всяких выебонов. И оно даже бы не упало, так как к полям объекта обращение не происходит.
int16 int16 21.11.201919:06 ответить ссылка 5.6
Ну а в шарпах надо таки сначало
A a = new A();
Stain Stain 21.11.201919:39 ответить ссылка 0.9
И работало бы до тех пор, пока кто-то другой не добавил бы в метод обращение к полю объекта(естественно, не подозревая, что на другом конце проекта какой-то дебил вызывает метод на неинициализированном объекте). Иииии. Замечательный плавающий баг!
C для начала послал бы тебя на хер, тк не знает, что такое классы
villy villy 21.11.201920:14 ответить ссылка 0.0
вообще-то, нет в С нет методов вообще, как таковых, а в С++ вызов метода с нулевым this - УБ
wooooot wooooot 21.11.201921:30 ответить ссылка -0.4
Вот вы придирчивые, villy уже написал об этом. Да я криво написал, но я имел в виду вообще всю философию С/С++, где на первое место ставиться производительность, а всякие проверки в рантайме сведены на нет, даже исключения отключаемые. То, что в С не классов и так ясно.

Это конечно очень, очень плохо так делать, но в С++ вызов метода с нулевым this, если метод и класс не виртуальный совсем не УБ. Оно будет работать, и оно не может не работать, так как невиртуальный метод это обычная функция, имя которой было mangled особым образом.
int16 int16 21.11.201921:47 ответить ссылка -0.3
Таки загуглил, всюду пишут, что это УБ, аргументируя что дереференс нулпоинтера это УБ, но здесь как раз дереференса то и не происходит. Вообщем оно то скорее всего таки де юро УБ, но во всех имплементациях плюсов работать будет (потому, что это обычная функция, но замангленная).
Я видел сотню раз, как во всяких опенсорсных либах это эксплойтилось для разных хаков.
int16 int16 21.11.201922:03 ответить ссылка -0.3
Ну, накидал я этот код, честно, я хз как это работает...
* ConsoleApplication4 (Running) - Microsoft Visual Studio
FILE EDIT VIEW PROJECT BUILD DEBUG TEAM TOOLS TEST ANALYZE WINDOW HELP
Q - - &l U J“ 9 -	► Continue * 0 ”	Release Win32	v	Application Insights Events * _ II ■ £)
Process: [9504] ConsoleApplication4.exe	r] Lifecycle Events -	Thread:
>но во всех имплементациях плюсов работать будет

не будет, начиная с версии gcc, ЕМНИП, 9
Да ну, и по какой такой причине?
Вот ниже асм сгенереный gcc 9.2, почему оно должно не работать?
https://godbolt.org/z/zaN33V
COMPILER
EXPLORER
Add... ■*	More'’'		Support diversity in C++ with #include <C++> *		Share*
Other -
C++source#! X			n :	X	x86-64 gcc 9.2 (Editor #1. Compiler #1) C++ X		
> < B	+ - v fi	C++	▼		X86-64 gcc 9.2		^ © Compiler options...
l	»include <stdio.h>						
2		f R-'			A- □ 11010 D./a.out
int16 int16 22.11.201922:28 ответить ссылка 0.0
Ты точно понимаешь, что такое УБ?
Ты точно читал, что я написал, прежде чем писать коммент?
где я спорю с тем, что это УБ?

>> оно то скорее всего таки де юро УБ, но во всех имплементациях плюсов работать будет


Вообще желательно конечно найти где именно в стандарте это УБ, потому как дереференса поинтера здесь не происходит, поэтому не все однозначно.

Я говорю о том, что оно работать на всех имплементацих будет, и подругому быть не может. Просто потому, что так язык устроен, и ему нужно обратная совместимость с С.
int16 int16 23.11.201919:25 ответить ссылка 0.0
Так себе юмор
Просто забыл волшебное слово написать
public class Test {
© public static void main(String[] args) { Asshole a = nul.;
}
}
class Asshc {
© public static void open() {
Systei .out.print("Youre ~aggot");
}
)
lumen lumen 21.11.201921:35 ответить ссылка -2.5
Static?
Gwiny Gwiny 21.11.201922:31 ответить ссылка 0.6
Вызывать статики через экземпляры объекта - дурной тон.
А тут почти и нет никакого экземпляра
lumen lumen 22.11.201911:07 ответить ссылка 0.4
Только зарегистрированные и активированные пользователи могут добавлять комментарии.
Похожие темы

Похожие посты
code comments be like
***i-*-S^l Newbie: So which programming language should I learn first?
Programmers: What people think is hard:
What is actually hard:
Google Cloud|
Ü Azure
Understanding service pricing plans..