=波波日志 > Asp.Net/C#/WCF > 可空类型=

[转]可空类型

+展开
-C#
///可空类型
/// 在C#中 int32? 等价于 System.Nullable<int> 它们是一样的。
///System.Nullable<T>结构
///.NET 2.0Framework提供了System.Nullable<T>泛型结构,其定义如下所示
///public struct System.Nullable<T>
///{
///    public Nullable(T value);
///
///    public static expicit operator T ( T? value);
///    public static implicit operator T? ( T value);
///
///    public bool HasValue
///    {
///       get;
///    }
///
///    public T value
///    {
///        get;
///    }
///
///    public override bool Equals( object other );
///    public override int Gethashcode ();
///    public T GetvalueOrDefault();
///    public T GetvalueOrDefault ( T defaultValue );
///    public override string ToString ();
///}
///这个结构很好地解决了类型参数 T 取值类型时的空值问题,比如取int。下
///面有一个小例子展示了这个结构的用法。第一版本的Fct()利用了string类型
///的可空性,而第二个版本则利用了一个Nullable<int>结构实例的可空性。
///

using System;
/// <summary>
/// 主程序
/// </summary>
class program
{
    /// <summary>
    /// Fct方法接受一个字符串型数据,返回一个字符串型数据
    /// </summary>
    /// <param name="s">is string</param>
    /// <returns></returns>
    static string Fct(string s)
    {
        if (s == null)
        {
            return null;
        }
        return s + s;
    }

    /// <summary>
    /// Fct方法接受一个可空整型,返回一个可空整型
    /// </summary>
    /// <param name="ni">is System.Nullable<int> </param>
    /// <returns></returns>
    static System.Nullable<int> Fct(System.Nullable<int> ni)
    {
        if (!ni.HasValue)
        {
            return ni;
        }
        return ni.Value + ni.Value;
    }
    /// <summary>
    /// 入口Main方法
    /// </summary>
    static void Main()
    {
        ///新建一个可空值类型的实例,注意:可空值类型和值类型
        ///一样,它们是存储在线程堆栈中的
        System.Nullable<int> abc = new System.Nullable<int>();
        ///给可空值类型赋值为100
        abc = 100;
        ///将可空值类型实例做为参数传给Fct方法,这个方法将传回
        ///一个可空值类型的实例给新建的可空值类型变量cc
        int? cc=program.Fct(abc);
        ///输出可空值类型cc的值
        Console.WriteLine(cc);
        ///这个方法很好用,一定要牢记,使用两个问号??的用法
        ///如果cc不为空(null)那么返回cc的值给abb变量,如果cc
        ///的值为空,那么返回数值111给abb变量
        int? abb = cc ?? 111;
        ///输出abb的值
        Console.WriteLine(abb);
        ///将可空值类型实例的值,赋值为空(null)
        cc=null;
        ///这个方法很好用,一定要牢记,使用两个问号??的用法
        ///如果cc不为空(null)那么返回cc的值给abb2变量,如果cc
        ///的值为空,那么返回数值111给abb2变量
        int? abb2 = cc ?? 222;
        ///输出abb2的值
        Console.WriteLine(abb2);
    }
}


来源:http://2sws.blog.163.com/blog/static/179102492009843456708/
类别:Asp.Net/C#/WCF 作者:转载 日期:2010-12-07 【评论:0】 
 
暂时没有评论!
发表留言
  • *昵称:
  • 头像:
  • 电子邮件: [留下您的邮件,方便管理员回复您。]
  • 个人网站: *验证码:
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载或引用的作品侵犯了您的权利,请通知我们,我们会及时删除!
Powered by showbo,©2012,桂ICP备05005887号 京公网安备1101055090