您的位置:首页 > 游戏 > 手游 > 企业网络平台建设_推广计划书_淄博网站seo_免费个人网站建站

企业网络平台建设_推广计划书_淄博网站seo_免费个人网站建站

2025/1/8 19:39:57 来源:https://blog.csdn.net/weixin_44499065/article/details/144943246  浏览:    关键词:企业网络平台建设_推广计划书_淄博网站seo_免费个人网站建站
企业网络平台建设_推广计划书_淄博网站seo_免费个人网站建站

在C#中,default关键字用于指定泛型类型参数的默认值。这个值通常是该类型的零值。

  • 值类型:对于值类型(如int、double等),default关键字会返回该类型的零值。例如,对于int类型,default(int)的值是0。
  • 引用类型:对于引用类型(如类、字符串等),default关键字会返回null。

结构体示例

下面是一个使用泛型方法的示例:

using System;
public struct Point
{public int X { get; set; }public int Y { get; set; }public Point(int x, int y){X = x;Y = y;}// 重写ToString方法以便于输出public override readonly string ToString(){return $"({X}, {Y})";}
}
class Program
{// 泛型方法,返回类型参数T的默认值public static T? GetDefault<T>() => default;static void Main(){/// 获取int类型的默认值int defaultValueInt = GetDefault<int>();Console.WriteLine($"int的默认值: {defaultValueInt}");// 获取string类型的默认值string? defaultValueString = GetDefault<string>();Console.WriteLine($"string的默认值: {defaultValueString}");// 获取Point结构体的默认值Point defaultValuePoint = GetDefault<Point>();Console.WriteLine($"Point结构体的默认值: {defaultValuePoint}");}
}

运行结果:
在这里插入图片描述
上面的示例定义了一个简单的结构体Point,包含两个整数属性X和Y。
重写了ToString方法,以便于在控制台输出时能够显示点的坐标

还定义了一个泛型方法GetDefault,这个方法接受一个泛型类型参数T,并返回该类型的默认值
使用default(T)来获取类型T的默认值,示例中使用了语法糖简化代码。

调用GetDefault()获取int类型的默认值,并输出到控制台,结果是0
调用GetDefault()获取string类型的默认值,并输出到控制台,结果是null
调用GetDefault()获取Point结构体的默认值,并输出到控制台,结果是(0, 0),因为结构体的默认值是使用字段的默认值来初始化

对于引用类型,default的值通常是null。这是因为引用类型的变量在没有显式初始化时,默认指向null,表示没有引用任何对象。

引用示例

下面是一个示例,演示如何在引用类型中使用default关键字:

using System;public class Person
{public string Name { get; set; }public int Age { get; set; }public Person(string name, int age){Name = name;Age = age;}public override string ToString(){return $"姓名: {Name}, 年龄: {Age}";}
}public class Program
{// 泛型方法,返回类型参数T的默认值public static T? GetDefault<T>(){return default;}static void Main(){// 获取string类型的默认值string? defaultValueString = GetDefault<string>();Console.WriteLine($"string默认值: {defaultValueString}");// 获取Person类型的默认值Person? defaultValuePerson = GetDefault<Person>();Console.WriteLine($"Person默认值: {defaultValuePerson}");// 尝试输出Person的属性(会引发空引用异常)try{
#pragma warning disable CS8602 // 解引用可能出现空引用。Console.WriteLine($"姓名: {defaultValuePerson.Name}");
#pragma warning restore CS8602 // 解引用可能出现空引用。}catch (NullReferenceException ex){Console.WriteLine($"抓到一个异常: {ex.Message}");}}
}

运行结果:
在这里插入图片描述

示例中定义了一个简单的Person类,包含NameAge属性,并重写了ToString方法,以便于在控制台输出时能够清晰地显示对象的信息
定义了泛型方法GetDefault<T>,这个方法接受一个泛型类型参数T,并返回该类型的默认值,使用default(T)来获取类型T的默认值,用了语法糖,简化代码。

主程序中调用GetDefault<string>()获取string类型的默认值,并输出到控制台,结果是null,调用GetDefault<Person>()获取Person类型的默认值,并输出到控制台,结果是null,尝试输出Person对象的Name属性,由于对象是null,会引发NullReferenceException,并捕获异常输出错误信息.

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com