c#结构函数使用了未赋值的局部变量

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ex0603
{
class Program
{
struct order
{
public string itemName;
public int unitCount;
public double unitCost;
public double Money()
{
return unitCost * unitCount;
}
}
static void Main(string[] args)
{
order myOrder;
Console.WriteLine("数量:");
myOrder.unitCount = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("单价:");
myOrder.unitCost = Convert.ToDouble(Console.ReadLine());

Console.WriteLine(myOrder.Money());

}
}
}

我编译程序时,出错说最后一行,使用了未赋值的局部变量 myOrder。不知道为什么

实例化:
static void Main(string[] args)
{
order myOrder=new order();
Console.WriteLine("数量:");
myOrder.unitCount = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("单价:");
myOrder.unitCost = Convert.ToDouble(Console.ReadLine());

Console.WriteLine(myOrder.Money());

}

或者可以使用静态:
namespace ex0603
{
class Program
{
public static struct Order
{
public string itemName;
public int unitCount;
public double unitCost;
public double Money()
{
return unitCost * unitCount;
}
}
static void Main(string[] args)
{
Console.WriteLine("数量:");
Order.unitCount = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("单价:");
Order.unitCost = Convert.ToDouble(Console.ReadLine());

Console.WriteLine(myOrder.Money());

}
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-07-16
static void Main(string[] args)
{
order myOrder =new order();
Console.WriteLine("数量:");
myOrder.unitCount = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("单价:");
myOrder.unitCost = Convert.ToDouble(Console.ReadLine());
Console.WriteLine(myOrder.Money());
}

把order 实例化下本回答被网友采纳
第2个回答  2012-07-16
呵呵,这个很简单的 在声明order 时候 这样写 order myOrder;=new order(); 就可以了

c#结构函数使用了未赋值的局部变量
static void Main(string[] args){ order myOrder=new order();Console.WriteLine("数量:");myOrder.unitCount = Convert.ToInt32(Console.ReadLine());Console.WriteLine("单价:");myOrder.unitCost = Convert.ToDouble(Console.ReadLine());Console.WriteLine(myOrder.Money());} 或者可以使用...

C# 使用了未赋值的局部变量
首先,为了防止这种不必要的错误,初始化变量的时候,最好先赋个默认值,比如char A='';其次,这里会报错是这样的。你的变量A在for (int i = a - 1; i < a + 1; i++)循环体出现之前声明了,但是还没有初始化,此时直接调用A的话是会报错的,这个需要明白。然后return(A)出现在for (int...

未赋值的局部变量,在函数里和函数外系统会自动赋值吗?如果是静态局部变 ...
函数内的变量就是局部量,未赋值的,要看编译器,有的 处理为不定值,有的编译器也初始化为 数值 0 或者 空。静态局部变量,只是强调它的生命期 同 程序的生命期, 退出函数调用时,它的数值保留着,下次调用时将以它为初始值。

c#中局部变量必须得赋值?
对,要使用必须得先赋值,和c\/c++不一样。后面是类的成员变量,和局部变量是不一样的。成员变量在类初始化时就会分配一个默认值。

C语言,使用了未初始化的局部变量
当局部变量未初始化,且在第一次赋值前引用了该变量值,那么就会报使用了未初始化的局部变量这样一个警告或者错误。局部变量定义时的形式为 TYPE var = init_value;其含义为定义一个类型为TYPE,名字为var的局部变量,并初始化为init_value。其中,=init_value部分可以省略。此时,var的初始值将是一个...

ref和out的区别在c#中?
(1)和(2)在编译的时候都会报错:错误 CS0165: 使用了未赋值的局部变量“i”而(3)能正常编译,而且输出3 最后总结一下:Ref和Out这两个关键字都能够提供相似的功效,其作用也很像C中的指针变量。稍有不同之处是:使用Ref型参数时,传入的参数必须先被初始化。而Out则不需要,对Out而言,就必须在...

使用了未初始化的局部变量,求大神赐教
void fun(char *s, int *t)只是函数的声明。函数调用应该是:fun(s, &t); \/\/ t的地址传给fun作为形参

C# 我在类里面声明了int类型,没有赋值,在方法里赋的值,在主函数调用类...
int类型的全局变量或者静态变量,未初始化的话会自动初始化为0,如果是局部变量,那就是以前残留在堆栈里的随机值。

C#中out和ref之间的区别
原则:ref作为参数的函数在调用前,实参必须赋初始值。否则编译器将提示:使用了未赋值的局部变量;out作为参数的函数在调用前,实参可以不赋初始值。3 关于在函数内,引入的参数初始值问题 原则:在被调用函数内,out引入的参数在返回前至少赋值一次,否则编译器将提示:使用了未赋值的out参数;在被调用...

c++中什么叫使用了未初始化的局部变量y?
当局部变量未初始化,且在第一次赋值前引用了该变量值,那么就会报使用了未初始化的局部变量这样一个警告或者错误。该程序中x,y,z,i均为局部变量,“i=0”首先对i变量进行了初始化,即赋值为0。接下来“for(x=1;y<20;x++)”,未对y进行初始化,赋值,就首次引用该变量,这种错误就叫做“使用...

相似回答