Depends on what your goal is.
If you want to make games in Unity, learning to script in C# for unity is probably enough to get your moving.
If you want to learn C# for the sake of learning to be a programmer… then yes, learn it outside of Unity.
Unity tacks on a lot of things you won’t usually need to do outside of unity, as well as is full of some pretty terribad design choices (which they’re working on remedying). But also you’ll miss out on a lot of fundamental stuff that unity tends to hide away from the average scripter not getting too advanced.
As for tutorials… I’m personally not a tutorial kind of person. I’m a fundamentals and textbook kind of person. Build a foundation of the fundamental concepts of a language, its design choices, and how to read it… rather than seeing how to adhoc a specific thing.
Tutorials I reserve for that last ditch, I can’t solve a problem, so I’ll see if someone else has solved it and see what they did. But seldom do I even follow the tutorial, but rather read through it to get a general idea, and then tackle it myself with this gained foresight.
But such a tactic requires knowing the fundamentals of programming, and the language in question. So that way you can see what chocies someone made in their tutorial, why they made them, and understand the consequences of them (good or bad).
So…
Get a book on C#, get a book on object oriented programming, get a book on design patterns (understanding that designs aren’t the gospel, but rather and idea you might want to consider), rip open some opensource projects, get messy… use the language, bath in the language… move to Paris and speak French with the Parisians. Don’t learn how to ask where the bathroom is, rather get lost in the city and trip over problems you need to figure out how to speak.
I usually do it by hanging out on active forums with my language of choice and just try to solve other people’s problems. Even if someone posted an answer… just try to solve it myself anyways. For me. To see if I can do it.