日期:2014-05-18  浏览次数:20705 次

这么短的一段里面竟然有两处语法不懂...MSDN也没搜到...
C# code
 class NullableEx
    {
        public static void Main()//Main_9_3_5
        {
            Nullable<int>[] arrs = new Nullable<int>[5];
            //int?[] arrs = new int?[5];
            arrs[4] = 100;
            arrs[2] = 200;
            arrs[3] = 300;

            foreach (int? j in arrs)
            {
                if (j == null)
                    Console.WriteLine("No value");
                else
                    Console.WriteLine(j);
            }
            Console.Read();
        }
    }

这个:反省后面跟一个[]什么意思?Nullable<int>[] arrs = new Nullable<int>[5];
另外:foreach (int? j in arrs)里面的?怎么解释?


------解决方案--------------------
[]:数组
int?:可赋null值的int类型
------解决方案--------------------
?表示这是一种特殊的整数类型,表示“可空”。
主要用于数据库中,比如有一个数据库字段定义为int,但它标记了null,对于这种数据库的值除了int范围内的值之外,还有一个可能就是null。
int? k;
仍然是一个结构体数据,它和其它操作特性和普通整数完全相同,但它可以进行如下操作
k=null;
k==null;


[]是声明数组。
------解决方案--------------------
[]:表示数组 声明
int?:对于那些不能赋值为null的变量可以赋null
比如int,double,datatime等
------解决方案--------------------
Nullable <int>[] arrs = new Nullable <int>[5]; 这是泛型数组啊

foreach遍历arrs里面的元素,int是arrs里面的元素类型

------解决方案--------------------

Nullable <int>[] arrs = new Nullable <int>[5]; 这是泛型数组啊 

代码定义了一个范型可空数组,数组内为整型元素

foreach (int? j in arrs)
因为前面定义了可空类数组,为了避免搜到空值而出错,所以定义J也能为空.
------解决方案--------------------
[]表示数组,在你这里就是Nullable <int>的一个数组,数组里面的元素是Nullable <int>
int?表示可以包含null
------解决方案--------------------
准确的说,应该叫 值类型的可空值类型

我们知道,引用类型(Class)的默认值是 null
而值类型(Struct)永远都不能等于 null
但是在数据库中,一个整形(int)字段又可以赋值为 null
为了解决这个问题,微软在 FCL 2.0 及其以后的版本加入了 值类型(Struct)的可空支持

而问号是C#的一种简写语法,不一定适合其它语言
Nullable <int>[] arrs 等价于 int?[]
------解决方案--------------------
俺也不懂
------解决方案--------------------
[] 是表示他是一个可空的值类型数组

int? 是表示 ,,int i = 0,等数值外还可以int i = null;
------解决方案--------------------
MSDN
真的没有吗?

哦呵呵.
------解决方案--------------------
一看就懂
------解决方案--------------------
学习了