c# - 获取没有实例的字段类型默认值
问题描述
我想获取字段类型的默认值。我希望有类似下面的代码(当然不能编译):
public class foo
{
public int intf;
public string strf;
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine(default(foo.intf)); //Expected default(int)
Console.WriteLine(default(foo.strf)); //Expected default(string)
}
}
有没有办法做到这一点?
解决方案
首先,您需要进行反射以获得适当的字段:
var field = typeof(foo).GetField("intf");
现在您可以获得该字段的返回类型:
var type = field.FieldType
最后,您可以获得类型默认值,例如,使用与 default(Type) 等效的 Programmatic中的这种方法:
var default = type.IsValueType ? Activator.CreateInstance(type) : null;
推荐阅读
- c++ - 将 Cspice 与 mingw 一起使用
- c# - 检查用户是否通过 C# 中的 CalendarDatePicker 输入了日期时间值
- ios - 可以在 Safari 中访问原深感摄像头吗?
- scrapy - 刮擦 | 如何在没有 urllib 的情况下从请求中获得响应?
- sql - 用于证明候选键约束在 R(ABCD) 中成立的 SQL 语句
- java - 使用 Ionic 4 访问 JAR 文件中的 Java API
- node.js - Angular、电子、打字稿和机器人
- javascript - 为什么 Node.js 不能处理来自 Vue.js 的请求?
- haskell - 如何避免编写琐碎的数据类型检查函数
- c# - 在 C# 中使用带有数据库的组合框选择索引值