C# 如何确定在c中用var关键字声明的变量的类型# 我想从用户那个里获取输入并打印用户给出的输入类型 我试过这个

C# 如何确定在c中用var关键字声明的变量的类型# 我想从用户那个里获取输入并打印用户给出的输入类型 我试过这个,c#,.net,C#,.net,我也试过,但总是出错 using System; class Solution { static void Main(String[] args) { var userObj = Console.ReadLine(); if (string.Format(userObj) == string .Format("0")) { Console.WriteLine("it is of type interger"


我也试过,但总是出错

using System;
class Solution
{

    static void Main(String[] args)
    {
        var userObj = Console.ReadLine();
        if (string.Format(userObj) == string .Format("0"))
        {
            Console.WriteLine("it is of type interger");
        }
    }
}

尝试用一些不同的数据类型从最大到最小解析一些。我想你应该把这个号码存到最小的号码里

float var1;
double var2;
int var3;

if (float.TryParse(urMom, out var1))
    Console.WriteLine("Float");
else if (double.TryParse(urMom, out var2))
    Console.WriteLine("Double");
else if (int.TryParse(urMom, out var3))
    Console.WriteLine("Int");

你误解了
var
在C#中的工作原理。C#是一种强类型语言,因此它与其他使用类似JavaScript的
var
的语言不同。因此,声明为var的变量已经知道它在编译时是什么类型

Console.ReadLine()
返回一个字符串,因此在这个意义上变量
userObj
将是一个字符串。除了字符串类型之外,您永远不会得到任何东西

但是,您可以尝试几种方法,看看是否可以将其转换为其他类型。例如:

var userInput = Console.ReadLine();
int x;
if(int.TryParse(userInput, out x))
{
    Console.WriteLine("That's an int!");
}

您需要尝试将字符串解析为每种类型
5
对于
double
int
是完全有效的值,因此答案是不明确的。您的代码将变成
if(int.TryParse(userObj,out-varơ){Console.WriteLine(“int”)}或者if(double.TryParse(…
等等)。@Rob是对的,因为
Console.ReadLine()
总是给您一个字符串,您需要尝试解析到您要查找的每种类型(例如DateTime、int等)。可以帮助您。@Rob感谢它的工作。
urMom
,非常成熟。另外,您使用的
TryParse
错误,请允许我编辑。在您提交后立即捕获。此
var1!=null
生成编译器警告,因为
float
永远不能等于null。您可以内联您的声明,以使事情更加复杂adable,例如
int.TryParse(longNumber,out int结果);Trace.WriteLine(结果)
@Janesabouchleich:好吧,这取决于你正在使用的C#编译器的版本。我希望它在针对.NET 2.0时仍能工作……这很好,还扩展了它的双精度和浮点值。但是,在提交代码挑战时,对糟糕的设计和语言进行了审查,有没有办法改进这段代码的设计或使用其他一些可能的方法。在不知道挑战的全部细节的情况下,除了可能会有一个循环,在无效输入时再次询问,并扩展类型以包括您提到的其他数据类型,如浮点/双精度。这是一项非常基本的任务。
var userInput = Console.ReadLine();
int x;
if(int.TryParse(userInput, out x))
{
    Console.WriteLine("That's an int!");
}