What is the difference between foo.get("bar") and foo["bar"] ?

I don't understand the difference between these too, but they do matter when it comes to strict typing

var foo as Dictionary<String> 

foo.get() works 

var foo

foo.get() works but warns, but foo[] works without warn

Anyone can explain the difference to me?