隐式类型变量必须初始化
问题描述:
using System;
namespace Task2
{
class BirthDate
{
static void Main(string[] date)
{
var Month;
Console.WriteLine("Please enter your month of birth:");
Month = Console.ReadLine();
var Day;
Console.WriteLine("Please enter your day of birth:");
Day = Console.ReadLine();
Console.WriteLine("Your birth month is {0}, on day {1}", Month, Day);
Console.ReadLine();
}
}
}
当我尝试编译时,我从变量中得到两个错误,我不知道如何解决它。隐式类型变量必须初始化
答
当你把刚刚
var Day;
编译器不能弄清楚Day
变量的实际类型;将其更改为
var Day = Console.ReadLine();
和已经知道Console.ReadLine()
回报String
,编译器可以很容易地检测出Day
是String
类型:
Console.WriteLine("Please enter your month of birth:");
var Month = Console.ReadLine();
Console.WriteLine("Please enter your day of birth:");
var Day = Console.ReadLine();
答
你不能没有初始化使用隐式类型的变量。您应该初始化变量以让编译器推断变量的类型。
当在代码上查看时,不要使用隐式类型变量。
var iDontKnowWhatTypeOfIt = SomeMethod(); // not good
var itIsObviousThatImTimeSpan = TimeSpan.FromSeconds(5); // OK
答
您尚未定义月份和日期是哪种类型。 当使用“var”时,您必须根据定义为其设置一个值。 修复你的代码最简单的方法是简单地写VAR前控制台读取这样:
using System;
namespace Task2
{
class BirthDate
{
static void Main(string[] date)
{
Console.WriteLine("Please enter your month of birth:");
var Month = Console.ReadLine();
Console.WriteLine("Please enter your day of birth:");
var Day = Console.ReadLine();
Console.WriteLine("Your birth month is {0}, on day {1}", Month, Day);
Console.ReadLine();
}
}
}
答
要么让编译器分配
Console.WriteLine("Please enter your month of birth:");
var Month = Console.ReadLine();
推断类型或指定类型明确
string Month;
Console.WriteLine("Please enter your month of birth:");
Month = Console.ReadLine();
你会得到什么错误? – Julian
使用'String',对每个人来说都更容易。这是一种强类型语言,所以强类型变量plz。 – Nyerguds