I'm allways confused about term "dependency injection".

Let's take a look at these two examples:

1.) Constructor injection
Code:
public class SomeClass
{
      private readonly Class1 class1;

      public SomeClass(Class1 _class1)
      {
          class1=_class1;
  
         //....
       }

}
2.) initializing instance in constructor

Code:
public class SomeClass
{
      private readonly Class1 class1;

      public SomeClass()
      {
          class1= new Class1();
  
         //....
       }

}
Now I'm wondering:

- why is example 1.) considered to be a dependency injection and example 2.) not ?

- what are differencies between them ?

- what are pros/cons of using each?


I'm hoping for a simple answer, since I'm a newbie in WPF. Thanks in advance