C# 8中基本数据类型的可空值类型

        C# 8中基本数据类型除了 string (string是引用类型)外,int、long、float、double、decimal、char、bool (这7中都是值类型)都可以声明为可空值类型。且在方法中使用时,参数位置也没有可空值类型必须在非可空值类型后面的限制,可空值类型可以定义在方法参数列表的前中后任何位置。

        struct(结构) 类型是值类型,也可以声明为可空值类型。

        对于 string 类型,可以用 string.Empty 输出空值。另外,除了 string.Empty 外,string 类型也可直接赋值为 null。如下:

string str = null;  // 合法
string str = string.Empty;  // 合法
        代码如下所示:

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

namespace 可空类型
{
    class Program
    {
        static void Main(string[] args)
        {
            Student student1 = new Student();

            student1.StudentInformation(12, "boy", 18, 180, 86.0F, 
                90.0, 95.0M, 85.0F, "Steven", 'A', true, 168);

            Console.WriteLine();

            student1.StudentInformation(12, "boy", null, null, null, 
                null, null, 85.0F, "Steven", null, null, 168);

            Console.WriteLine();

            student1.StudentInformation(12, string.Empty, null, null, null,     
                null, null, 85.0F, string.Empty, null, null, 168);

                // 对于 string 类型,可以用 string.Empty 输出空值

            Console.WriteLine();

            student1.StudentInformation(12, null, null, null, null,
                null, null, 85.0F, null, null, null, 168);

                // 把 赋值给 string 类型的 string.Empty 
                // 换成 null 后可得到同样的输出
        }
    }

    class Student
    {
        //public Student()
        //{
        // 默认构造器注释掉,依然可以运行,实际上程序会自己建一个隐藏的默认构造器
        //}       
        public void StudentInformation(
            int schoolAge,
            string sex,
            int? age,
            long? height,
            float? mathScore,
            double? biologyScore,
            decimal? geographyScore,
            float artScore,
            string name,
            char? scoreGrade,
            bool? passed, 
            int ID)
        {
            Console.WriteLine("Name:            {0}", name);
            Console.WriteLine("ID:              {0}", ID);
            Console.WriteLine("Sex:             {0}", sex);
            Console.WriteLine("Age:             {0}", age);
            Console.WriteLine("SchoolAge:       {0}", schoolAge);
            Console.WriteLine("Height:          {0}", height);
            Console.WriteLine("MathScore:       {0}", mathScore);
            Console.WriteLine("ArtScore:        {0}", artScore);
            Console.WriteLine("BiologyScore:    {0}", biologyScore);
            Console.WriteLine("GeographyScore:  {0}", geographyScore);
            Console.WriteLine("ScoreGrade:      {0}", scoreGrade);
            Console.WriteLine("Passed:          {0}", passed);
        }
    }
}

        运行后结果如下所示:


发布了51 篇原创文章 · 获赞 17 · 访问量 15万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章