zoukankan      html  css  js  c++  java
  • 可空值类型

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data.SqlClient;

    namespace _03可空值类型
    {
    class Program
    {
    static void Main(string[] args)
    {

    #region 可空值类型

    //引用类型可空,值类型不可空

    //int n = 10;
    //string s = "hello";
    //s = null;
    //n = null;

    // int? 等价于 Nullable<int>
    //int? n = 10;
    //Nullable<int> n = 10;
    //n = null;
    //n = 100;
    //n++;


    //Console.WriteLine(n);
    //Console.WriteLine("ok");
    //Console.ReadKey();

    //Nullable继承于Struct,结构体是值类型的,并不能真正赋值为null(详见图一)

    //所以可控制类型并没有把一个NULL值赋值给 变量n,而是编译时用另一中方式让你看起来可以为NULL。
    //Nullable<int> n = 10;

    //内部执行过程

    //Nullable<int> n;

    // 如果有值,那么内部HasValue属性赋值为true
    //n.HasValue = true;

    //然后赋值
    //n.Value = 10;

    //Nullable<int> n = null;

    //如果为Null,那么只把HasValue属性赋值为false,并不真正赋值。
    //n.HasValue = false;

    // 使用到的时候,例如判断 int? n =null 时候为null值。

    //if (n==null) //实际等价于 if(!n.HasValue)
    //{

    //}

    // 下同

    //int? n = 10;
    //double? d = 10.1;
    //float? x = 99;
    //bool? b = false;

    ////string? s = "aaa"; 报错可空值类型只能用于值类型,不能应用于引用类型,因为引用类型本身可以赋值为null。
    #endregion

    #region 使用带参数sql语句时的一个问题
    string sql = "insert into TblPerson values(@name,@age,@height,@gender)";


    SqlParameter[] pms = new SqlParameter[] {
    new SqlParameter("@name","王五"),

    new SqlParameter("@age",0), //报错 重载识别错误,详见图二。
    //new SqlParameter("@age",System.Data.SqlDbType.Int){Value=0}, //建议指明类型。
    new SqlParameter("@height",180),
    new SqlParameter("@gender",true)
    };
    _02封装SqlHelper类.SqlHelper.ExecuteNonQuery(sql, pms);
    Console.WriteLine("ok");
    Console.ReadKey();
    #endregion


    }
    }
    }

    图一 、利用反编译软件 .NetReflector 7.0 查看内部代码:

     图二 重载问题

  • 相关阅读:
    Laravel 通知
    LARAVEL 6 + VUE + SEMANTIC UI
    Laravel 从入门到精通教程【预备篇、基础篇】
    Laravel Vue.js 聊天室
    GIT代码管理: git remote add 【转载】
    Laravel Vuejs 实战:开发知乎 (45-47)用户设置
    Laravel Vuejs 实战:开发知乎 (42-44)用户头像
    如何在运行时更改JMeter的负载
    Jmeter Grafana Influxdb 环境搭建
    实时结果
  • 原文地址:https://www.cnblogs.com/hao-1234-1234/p/8068589.html
Copyright © 2011-2022 走看看