c# var
-
What is the love affair with var? I see sample code where they do something like
var url = "http://someapi";
This feels lazy to me but I am open minded and am curious if I am missing something. Is there some benefit to declaring most things var instead of what they actually are? In the case above, a string.
Social Media - A platform that makes it easier for the crazies to find each other. Everyone is born right handed. Only the strongest overcome it. Fight for left-handed rights and hand equality.
The only benefit is that if you don't understand types then there is a chance your code will work using var even though you don't know why. Also I've found some common style tools dictate you should use var. I don't mind it for
var name = "Blah";
or
var people = new List();
but I hate it when people use it for things like
var data = SomeFunction();
-
What is the love affair with var? I see sample code where they do something like
var url = "http://someapi";
This feels lazy to me but I am open minded and am curious if I am missing something. Is there some benefit to declaring most things var instead of what they actually are? In the case above, a string.
Social Media - A platform that makes it easier for the crazies to find each other. Everyone is born right handed. Only the strongest overcome it. Fight for left-handed rights and hand equality.
ZurdoDev wrote:
This feels lazy to me but I am open minded and am curious if I am missing something. Is there some benefit to declaring most things var instead of what they actually are? In the case above, a string.
I felt the same way initially, and I agree, for something simple like a native type, I rarely use var. However:
var complicatedDictionary = new Dictionary>();
and worse, I like definitely like it.Latest Articles:
Abusing Extension Methods, Null Continuation, and Null Coalescence Operators -
What is the love affair with var? I see sample code where they do something like
var url = "http://someapi";
This feels lazy to me but I am open minded and am curious if I am missing something. Is there some benefit to declaring most things var instead of what they actually are? In the case above, a string.
Social Media - A platform that makes it easier for the crazies to find each other. Everyone is born right handed. Only the strongest overcome it. Fight for left-handed rights and hand equality.
The advantage of var is if
"http://someapi"
was a variable or class instance instead of a string literal and you changed its type, you would not then need to refactor the code elsewhere. In your example it's just a case of habit probably, however it's obvious from what is on the right that it's a string. It can sometimes make it harder to debug issues as jumping to the class definition might not always be supported in the IDE you use to debug thevar url
value with or have to wait for the IDE to resolve the type that thevar
is. That's my take onvar
...“That which can be asserted without evidence, can be dismissed without evidence.”
― Christopher Hitchens
-
What is the love affair with var? I see sample code where they do something like
var url = "http://someapi";
This feels lazy to me but I am open minded and am curious if I am missing something. Is there some benefit to declaring most things var instead of what they actually are? In the case above, a string.
Social Media - A platform that makes it easier for the crazies to find each other. Everyone is born right handed. Only the strongest overcome it. Fight for left-handed rights and hand equality.
I use
auto
, the C++ equivalent, whenever it will deduce the correct type. - It forces you to initialize the variable. - If the variable is initialized by calling a function, and that function's return type changes, the code might not even be affected. - Some type names are long or complicated, and I hate spilling lines. Some argue that it makes the code harder to understand because the reader has to figure out the type. My counterargument is that the reader doesn't understand how the code fits into the system if this is the case.Robust Services Core | Software Techniques for Lemmings | Articles
-
What is the love affair with var? I see sample code where they do something like
var url = "http://someapi";
This feels lazy to me but I am open minded and am curious if I am missing something. Is there some benefit to declaring most things var instead of what they actually are? In the case above, a string.
Social Media - A platform that makes it easier for the crazies to find each other. Everyone is born right handed. Only the strongest overcome it. Fight for left-handed rights and hand equality.
it is good for a lot of applications but can be missused very easily. it's main purpose is code readability.
MyMostExcellentBaseClassOfAllClassesInTheWholeWorld myClass = new MyMostExcellentBaseClassOfAllClassesInTheWholeWorld();
or
var myClass = new MyMostExcellentBaseClassOfAllClassesInTheWholeWorld();
It is really good when working with Linq, etc. as well.
-
ZurdoDev wrote:
This feels lazy to me but I am open minded and am curious if I am missing something. Is there some benefit to declaring most things var instead of what they actually are? In the case above, a string.
I felt the same way initially, and I agree, for something simple like a native type, I rarely use var. However:
var complicatedDictionary = new Dictionary>();
and worse, I like definitely like it.Latest Articles:
Abusing Extension Methods, Null Continuation, and Null Coalescence OperatorsMarc Clifton wrote:
var complicatedDictionary = new Dictionary<SomeKey, List<KeyValue>>();
and worse, I like definitely like it.I can see that.
Social Media - A platform that makes it easier for the crazies to find each other. Everyone is born right handed. Only the strongest overcome it. Fight for left-handed rights and hand equality.
-
ZurdoDev wrote:
This feels lazy to me but I am open minded and am curious if I am missing something. Is there some benefit to declaring most things var instead of what they actually are? In the case above, a string.
I felt the same way initially, and I agree, for something simple like a native type, I rarely use var. However:
var complicatedDictionary = new Dictionary>();
and worse, I like definitely like it.Latest Articles:
Abusing Extension Methods, Null Continuation, and Null Coalescence OperatorsI'd actually prefer it is you could do this:
Dictionary> complicatedDictionary = new *();
To me, that would be a more natural way of showing what the type of
complicatedDictionary
actually is. As it is, I findvar
is mainly over used by the lazy-and-don't-care script kiddies ..."I have no idea what I did, but I'm taking full credit for it." - ThisOldTony AntiTwitter: @DalekDave is now a follower!
-
it is good for a lot of applications but can be missused very easily. it's main purpose is code readability.
MyMostExcellentBaseClassOfAllClassesInTheWholeWorld myClass = new MyMostExcellentBaseClassOfAllClassesInTheWholeWorld();
or
var myClass = new MyMostExcellentBaseClassOfAllClassesInTheWholeWorld();
It is really good when working with Linq, etc. as well.
I'd rather see it as:
MyMostExcellentBaseClassOfAllClassesInTheWholeWorld myClass = new *();
If that was possible.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony AntiTwitter: @DalekDave is now a follower!
-
What is the love affair with var? I see sample code where they do something like
var url = "http://someapi";
This feels lazy to me but I am open minded and am curious if I am missing something. Is there some benefit to declaring most things var instead of what they actually are? In the case above, a string.
Social Media - A platform that makes it easier for the crazies to find each other. Everyone is born right handed. Only the strongest overcome it. Fight for left-handed rights and hand equality.
var is ok as long as I can have a look to the code in VS with the help of intelisense. But in case I study a code snippet on www it becomes simply horrible because the real type is something hidden :(
It does not solve my Problem, but it answers my question
-
I'd rather see it as:
MyMostExcellentBaseClassOfAllClassesInTheWholeWorld myClass = new *();
If that was possible.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony AntiTwitter: @DalekDave is now a follower!
I think you can find instructions on how to create your own programming language here on CP, actually... ;P
Anything that is unrelated to elephants is irrelephant
Anonymous
-----
The problem with quotes on the internet is that you can never tell if they're genuine
Winston Churchill, 1944
-----
Never argue with a fool. Onlookers may not be able to tell the difference.
Mark Twain -
What is the love affair with var? I see sample code where they do something like
var url = "http://someapi";
This feels lazy to me but I am open minded and am curious if I am missing something. Is there some benefit to declaring most things var instead of what they actually are? In the case above, a string.
Social Media - A platform that makes it easier for the crazies to find each other. Everyone is born right handed. Only the strongest overcome it. Fight for left-handed rights and hand equality.
-
The advantage of var is if
"http://someapi"
was a variable or class instance instead of a string literal and you changed its type, you would not then need to refactor the code elsewhere. In your example it's just a case of habit probably, however it's obvious from what is on the right that it's a string. It can sometimes make it harder to debug issues as jumping to the class definition might not always be supported in the IDE you use to debug thevar url
value with or have to wait for the IDE to resolve the type that thevar
is. That's my take onvar
...“That which can be asserted without evidence, can be dismissed without evidence.”
― Christopher Hitchens
GuyThiebaut wrote:
The advantage of var is if
"http://someapi"
was a variable or class instance instead of a string literal and you changed its type, you would not then need to refactor the code elsewhere.Absolutely not true. Changing a data type and then attempting to use it elsewhere is guaranteed to cause you to have to modify code everywhere it's used. Fortunately the VS IDE is smart enough to identify those spots for you.
-
I'd actually prefer it is you could do this:
Dictionary> complicatedDictionary = new *();
To me, that would be a more natural way of showing what the type of
complicatedDictionary
actually is. As it is, I findvar
is mainly over used by the lazy-and-don't-care script kiddies ..."I have no idea what I did, but I'm taking full credit for it." - ThisOldTony AntiTwitter: @DalekDave is now a follower!
This is one place where VB has a better syntax:
dim complicatedDictionary as New Dictionary(of SomeKey, List(KeyValue))
I'd prefer to see the < and > symbols used around the type information as this would make it clear what is type information vs. New parameters/arguments.
-
GuyThiebaut wrote:
The advantage of var is if
"http://someapi"
was a variable or class instance instead of a string literal and you changed its type, you would not then need to refactor the code elsewhere.Absolutely not true. Changing a data type and then attempting to use it elsewhere is guaranteed to cause you to have to modify code everywhere it's used. Fortunately the VS IDE is smart enough to identify those spots for you.
obermd wrote:
Absolutely not true. Changing a data type and then attempting to use it elsewhere is guaranteed to cause you to have to modify code everywhere it's used.
Even when changing from a
short
to along
?“That which can be asserted without evidence, can be dismissed without evidence.”
― Christopher Hitchens
-
What is the love affair with var? I see sample code where they do something like
var url = "http://someapi";
This feels lazy to me but I am open minded and am curious if I am missing something. Is there some benefit to declaring most things var instead of what they actually are? In the case above, a string.
Social Media - A platform that makes it easier for the crazies to find each other. Everyone is born right handed. Only the strongest overcome it. Fight for left-handed rights and hand equality.
I rarely use var but I do use it when returning a tuple from a method to avoid
out
parameters. For examplevoid MainMethod() {
...
var methodCall = SomeMethod();
if (!methodCall.Success) {
return;
}
...
}(bool Success, int? ReturnValue) SomeMethod() {
int? retValue;...
if (...) {
return (Success: false, ReturnValue: null);
}
...return (Success: true, ReturnValue: retValue):
} -
I'd actually prefer it is you could do this:
Dictionary> complicatedDictionary = new *();
To me, that would be a more natural way of showing what the type of
complicatedDictionary
actually is. As it is, I findvar
is mainly over used by the lazy-and-don't-care script kiddies ..."I have no idea what I did, but I'm taking full credit for it." - ThisOldTony AntiTwitter: @DalekDave is now a follower!
That should hopefully be coming in C# 9: csharplang/target-typed-new.md at master · dotnet/csharplang · GitHub[^] Champion "Target-typed `new` expression" · Issue #100 · dotnet/csharplang · GitHub[^] Edit: As already mentioned in the Insider News[^]. :)
"These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer
-
I rarely use var but I do use it when returning a tuple from a method to avoid
out
parameters. For examplevoid MainMethod() {
...
var methodCall = SomeMethod();
if (!methodCall.Success) {
return;
}
...
}(bool Success, int? ReturnValue) SomeMethod() {
int? retValue;...
if (...) {
return (Success: false, ReturnValue: null);
}
...return (Success: true, ReturnValue: retValue):
}Or better yet:
var (Success, ReturnValue) = SomeMethod();
if (!Success) {
return;
}
"These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer
-
That should hopefully be coming in C# 9: csharplang/target-typed-new.md at master · dotnet/csharplang · GitHub[^] Champion "Target-typed `new` expression" · Issue #100 · dotnet/csharplang · GitHub[^] Edit: As already mentioned in the Insider News[^]. :)
"These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer
Hah! I just spent half an hour trying to persuade Google to let me know how you make suggestions for the C# spec ... :laugh: That language change I will use!
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony AntiTwitter: @DalekDave is now a follower!
-
What is the love affair with var? I see sample code where they do something like
var url = "http://someapi";
This feels lazy to me but I am open minded and am curious if I am missing something. Is there some benefit to declaring most things var instead of what they actually are? In the case above, a string.
Social Media - A platform that makes it easier for the crazies to find each other. Everyone is born right handed. Only the strongest overcome it. Fight for left-handed rights and hand equality.
Ah, the use of var. I know that some people use var to do code alignment on variable names; the idea being that it's easier to scan the name if it lines up.
private void DoSomething()
{
var apiEndpoint = new Uri("http://someapi");
var retryCount = 10;
var longClassName = new ThisIsAReallyLongNameThatWouldReallyScrewUpTheClassNameDeclaration();
// body of the method.
} -
The only benefit is that if you don't understand types then there is a chance your code will work using var even though you don't know why. Also I've found some common style tools dictate you should use var. I don't mind it for
var name = "Blah";
or
var people = new List();
but I hate it when people use it for things like
var data = SomeFunction();
In C++
auto i = small integer // seems rather silly, and obscures signed/unsigned
auto v = some complex STL type // is handy
auto l = some big elephanting lambda // is required, and why they added it"If we don't change direction, we'll end up where we're going"