Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# “什么是”呢;int?“;在C类型中_C#_Types_Int - Fatal编程技术网

C# “什么是”呢;int?“;在C类型中

C# “什么是”呢;int?“;在C类型中,c#,types,int,C#,Types,Int,我在一次考试中看到了这个代码示例问题,它非常有效 namespace Trials_1 { class Program { static void Main(string[] args) { int? a = 9; Console.Write("{0}", a); } } } 但是下面的代码抛出一个错误CS0266 namespace Trials_1 { class

我在一次考试中看到了这个代码示例问题,它非常有效

namespace Trials_1
{
    class Program
    {
        static void Main(string[] args)
        {
            int? a = 9;
            Console.Write("{0}", a);
        }
    }
}
但是下面的代码抛出一个错误CS0266

namespace Trials_1
{
    class Program
    {
        static void Main(string[] args)
        {
            int? a = 9;
            int b = a;
            Console.Write("{0},{1}", a, b);
        }
    }
}
谁能给我详细解释一下吗

有关错误的一些信息:

无法将类型“type1”隐式转换为“type2”。存在显式转换(是否缺少强制转换?) 当您的代码尝试在无法隐式转换但有显式转换可用的两种类型之间转换时,会发生此错误

可为null的int(
int?
)不能简单地转换为int。默认情况下,int不能为null,因此尝试将可以为null的内容转换为不能为null的内容时,会出现此错误。因为你试图做出这个假设,编译器告诉你,你不能

请参阅关于如何将可为null的int转换为int的帖子。

这是一个C#

可为null的类型表示可分配null值的值类型变量。不能基于引用类型创建可为空的类型。(引用类型已支持空值。)


这一行
intb=a
引发错误,因为无法将
int
类型直接分配到
可为null的int
类型。换句话说,
int
数据类型不能接受
null
值。

int?
null
的缩写,表示可以将
null
值分配给变量

在给出的示例中,变量
b
的类型是
int
,它不能接受
Nullable
的值


有关更多信息,请参阅。

如果要转换int?要使用int,必须强制转换它:

int? a = 9;
int b = (int)a;
或:

B.t.w:这不会有任何问题:

int a = 9;
int? b = a;

变量
b
的类型为
int
,您正试图将
int?
赋值给
int
。这将是错误的赋值(如果
a
为null,则不能将其赋值给不可为null的对象
b
,因此编译器将不允许这样做):或者,您可以使用:

int? a = 9;
int b = a == null ? 0 : 1;
Console.Write("{0},{1}", a, b); 

表示用(int?)声明的变量可为空

int i1=1; //ok
int i2=null; //not ok

int? i3=1; //ok
int? i4=null; //ok
可能重复的
int i1=1; //ok
int i2=null; //not ok

int? i3=1; //ok
int? i4=null; //ok