Scope issue in function, local variable not defined [duplicate]
This question already has an answer here:
C#: Use of unassigned local variable, using a foreach and if
5 answers
I am getting an error for dateClose.closing, "use is unassigned local variable". I declared dateClose outside of the for loop and defined the value inside the for loop. How can I make that value available outside of the for loop?
public class SMA
{
public Models.DateClose SMAMethod (Queue<Models.DateClose> queue, int period)
{
decimal average, sum=0;
Models.DateClose dateClose;
for (int i = 0; i < period; i++)
{
dateClose = queue.Dequeue();
sum += dateClose.Close;
}
average = sum/period;
dateClose.Close = average; <--- error
return dateClose;
}
}
c#
marked as duplicate by Servy
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 12 '18 at 23:10
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
add a comment |
This question already has an answer here:
C#: Use of unassigned local variable, using a foreach and if
5 answers
I am getting an error for dateClose.closing, "use is unassigned local variable". I declared dateClose outside of the for loop and defined the value inside the for loop. How can I make that value available outside of the for loop?
public class SMA
{
public Models.DateClose SMAMethod (Queue<Models.DateClose> queue, int period)
{
decimal average, sum=0;
Models.DateClose dateClose;
for (int i = 0; i < period; i++)
{
dateClose = queue.Dequeue();
sum += dateClose.Close;
}
average = sum/period;
dateClose.Close = average; <--- error
return dateClose;
}
}
c#
marked as duplicate by Servy
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 12 '18 at 23:10
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
The reason for the error is because the variable hasn't been assigned (i.e. it doesn't have a value assigned to it like 'null' or '1'). The answer by Steve below will fix that error.
– MikeH
Nov 12 '18 at 22:52
add a comment |
This question already has an answer here:
C#: Use of unassigned local variable, using a foreach and if
5 answers
I am getting an error for dateClose.closing, "use is unassigned local variable". I declared dateClose outside of the for loop and defined the value inside the for loop. How can I make that value available outside of the for loop?
public class SMA
{
public Models.DateClose SMAMethod (Queue<Models.DateClose> queue, int period)
{
decimal average, sum=0;
Models.DateClose dateClose;
for (int i = 0; i < period; i++)
{
dateClose = queue.Dequeue();
sum += dateClose.Close;
}
average = sum/period;
dateClose.Close = average; <--- error
return dateClose;
}
}
c#
This question already has an answer here:
C#: Use of unassigned local variable, using a foreach and if
5 answers
I am getting an error for dateClose.closing, "use is unassigned local variable". I declared dateClose outside of the for loop and defined the value inside the for loop. How can I make that value available outside of the for loop?
public class SMA
{
public Models.DateClose SMAMethod (Queue<Models.DateClose> queue, int period)
{
decimal average, sum=0;
Models.DateClose dateClose;
for (int i = 0; i < period; i++)
{
dateClose = queue.Dequeue();
sum += dateClose.Close;
}
average = sum/period;
dateClose.Close = average; <--- error
return dateClose;
}
}
This question already has an answer here:
C#: Use of unassigned local variable, using a foreach and if
5 answers
c#
c#
asked Nov 12 '18 at 22:42
Jam66125Jam66125
596
596
marked as duplicate by Servy
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 12 '18 at 23:10
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
marked as duplicate by Servy
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 12 '18 at 23:10
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
The reason for the error is because the variable hasn't been assigned (i.e. it doesn't have a value assigned to it like 'null' or '1'). The answer by Steve below will fix that error.
– MikeH
Nov 12 '18 at 22:52
add a comment |
The reason for the error is because the variable hasn't been assigned (i.e. it doesn't have a value assigned to it like 'null' or '1'). The answer by Steve below will fix that error.
– MikeH
Nov 12 '18 at 22:52
The reason for the error is because the variable hasn't been assigned (i.e. it doesn't have a value assigned to it like 'null' or '1'). The answer by Steve below will fix that error.
– MikeH
Nov 12 '18 at 22:52
The reason for the error is because the variable hasn't been assigned (i.e. it doesn't have a value assigned to it like 'null' or '1'). The answer by Steve below will fix that error.
– MikeH
Nov 12 '18 at 22:52
add a comment |
2 Answers
2
active
oldest
votes
you can simply fix the error by doing
Models.DateClose dateClose = null;
however you would also want to add a null check to make sure you don't run into null ref exception if queue has no item.
Steve, this line in the for loop "dateClose = queue.Dequeue();" assigns a value to dateClose.close. Why is it not known outside the for loop?
– Jam66125
Nov 13 '18 at 9:57
1
@Jam66125 because the line is not guarantee to run (I.E. period = 0)
– Steve
Nov 13 '18 at 15:29
add a comment |
You can do this. If your period
variable is greater than the queue count than dateClose.Close will throw an exception.
public Models.DateClose SMAMethod (Queue<Models.DateClose> queue, int period)
{
decimal average, sum=0;
Models.DateClose dateClose = null;
for (int i = 0; i < period; i++)
{
dateClose = queue.Dequeue();
if(dateClose != null)
sum += dateClose.Close;
}
average = sum/period;
dateClose.Close = average;
return dateClose;
}
Why do you get this error:
if you have the class, member variables neednot be initialized:
public class Test
{
private int temp; // this is okay.
..
}
However, if you have a local variable, then you need to initialize them:
public void Method()
{
int variabl;
sum += variable; // error.
}
So, local variables need to be initialized but member variables neednt be.
add a comment |
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
you can simply fix the error by doing
Models.DateClose dateClose = null;
however you would also want to add a null check to make sure you don't run into null ref exception if queue has no item.
Steve, this line in the for loop "dateClose = queue.Dequeue();" assigns a value to dateClose.close. Why is it not known outside the for loop?
– Jam66125
Nov 13 '18 at 9:57
1
@Jam66125 because the line is not guarantee to run (I.E. period = 0)
– Steve
Nov 13 '18 at 15:29
add a comment |
you can simply fix the error by doing
Models.DateClose dateClose = null;
however you would also want to add a null check to make sure you don't run into null ref exception if queue has no item.
Steve, this line in the for loop "dateClose = queue.Dequeue();" assigns a value to dateClose.close. Why is it not known outside the for loop?
– Jam66125
Nov 13 '18 at 9:57
1
@Jam66125 because the line is not guarantee to run (I.E. period = 0)
– Steve
Nov 13 '18 at 15:29
add a comment |
you can simply fix the error by doing
Models.DateClose dateClose = null;
however you would also want to add a null check to make sure you don't run into null ref exception if queue has no item.
you can simply fix the error by doing
Models.DateClose dateClose = null;
however you would also want to add a null check to make sure you don't run into null ref exception if queue has no item.
answered Nov 12 '18 at 22:45
SteveSteve
7,43361542
7,43361542
Steve, this line in the for loop "dateClose = queue.Dequeue();" assigns a value to dateClose.close. Why is it not known outside the for loop?
– Jam66125
Nov 13 '18 at 9:57
1
@Jam66125 because the line is not guarantee to run (I.E. period = 0)
– Steve
Nov 13 '18 at 15:29
add a comment |
Steve, this line in the for loop "dateClose = queue.Dequeue();" assigns a value to dateClose.close. Why is it not known outside the for loop?
– Jam66125
Nov 13 '18 at 9:57
1
@Jam66125 because the line is not guarantee to run (I.E. period = 0)
– Steve
Nov 13 '18 at 15:29
Steve, this line in the for loop "dateClose = queue.Dequeue();" assigns a value to dateClose.close. Why is it not known outside the for loop?
– Jam66125
Nov 13 '18 at 9:57
Steve, this line in the for loop "dateClose = queue.Dequeue();" assigns a value to dateClose.close. Why is it not known outside the for loop?
– Jam66125
Nov 13 '18 at 9:57
1
1
@Jam66125 because the line is not guarantee to run (I.E. period = 0)
– Steve
Nov 13 '18 at 15:29
@Jam66125 because the line is not guarantee to run (I.E. period = 0)
– Steve
Nov 13 '18 at 15:29
add a comment |
You can do this. If your period
variable is greater than the queue count than dateClose.Close will throw an exception.
public Models.DateClose SMAMethod (Queue<Models.DateClose> queue, int period)
{
decimal average, sum=0;
Models.DateClose dateClose = null;
for (int i = 0; i < period; i++)
{
dateClose = queue.Dequeue();
if(dateClose != null)
sum += dateClose.Close;
}
average = sum/period;
dateClose.Close = average;
return dateClose;
}
Why do you get this error:
if you have the class, member variables neednot be initialized:
public class Test
{
private int temp; // this is okay.
..
}
However, if you have a local variable, then you need to initialize them:
public void Method()
{
int variabl;
sum += variable; // error.
}
So, local variables need to be initialized but member variables neednt be.
add a comment |
You can do this. If your period
variable is greater than the queue count than dateClose.Close will throw an exception.
public Models.DateClose SMAMethod (Queue<Models.DateClose> queue, int period)
{
decimal average, sum=0;
Models.DateClose dateClose = null;
for (int i = 0; i < period; i++)
{
dateClose = queue.Dequeue();
if(dateClose != null)
sum += dateClose.Close;
}
average = sum/period;
dateClose.Close = average;
return dateClose;
}
Why do you get this error:
if you have the class, member variables neednot be initialized:
public class Test
{
private int temp; // this is okay.
..
}
However, if you have a local variable, then you need to initialize them:
public void Method()
{
int variabl;
sum += variable; // error.
}
So, local variables need to be initialized but member variables neednt be.
add a comment |
You can do this. If your period
variable is greater than the queue count than dateClose.Close will throw an exception.
public Models.DateClose SMAMethod (Queue<Models.DateClose> queue, int period)
{
decimal average, sum=0;
Models.DateClose dateClose = null;
for (int i = 0; i < period; i++)
{
dateClose = queue.Dequeue();
if(dateClose != null)
sum += dateClose.Close;
}
average = sum/period;
dateClose.Close = average;
return dateClose;
}
Why do you get this error:
if you have the class, member variables neednot be initialized:
public class Test
{
private int temp; // this is okay.
..
}
However, if you have a local variable, then you need to initialize them:
public void Method()
{
int variabl;
sum += variable; // error.
}
So, local variables need to be initialized but member variables neednt be.
You can do this. If your period
variable is greater than the queue count than dateClose.Close will throw an exception.
public Models.DateClose SMAMethod (Queue<Models.DateClose> queue, int period)
{
decimal average, sum=0;
Models.DateClose dateClose = null;
for (int i = 0; i < period; i++)
{
dateClose = queue.Dequeue();
if(dateClose != null)
sum += dateClose.Close;
}
average = sum/period;
dateClose.Close = average;
return dateClose;
}
Why do you get this error:
if you have the class, member variables neednot be initialized:
public class Test
{
private int temp; // this is okay.
..
}
However, if you have a local variable, then you need to initialize them:
public void Method()
{
int variabl;
sum += variable; // error.
}
So, local variables need to be initialized but member variables neednt be.
answered Nov 12 '18 at 23:07
GauravsaGauravsa
2,4151816
2,4151816
add a comment |
add a comment |
The reason for the error is because the variable hasn't been assigned (i.e. it doesn't have a value assigned to it like 'null' or '1'). The answer by Steve below will fix that error.
– MikeH
Nov 12 '18 at 22:52