c 视频网站开发入门,深圳龙岗网站建设,网站维护 网站建设属于什么,wap网站多少钱咨询区 ordag我知道方法声明成 void 表示不返回什么东西#xff0c;但我发现在 C# 中 void 不仅仅是一个关键词#xff0c;而且还是一个真实的类型。void 是 System.Void 的别名#xff0c;就像 int 的别名是 System.Int32 一样#xff0c;但为什么不允许直接使用Void类型呢… 咨询区 ordag我知道方法声明成 void 表示不返回什么东西但我发现在 C# 中 void 不仅仅是一个关键词而且还是一个真实的类型。void 是 System.Void 的别名就像 int 的别名是 System.Int32 一样但为什么不允许直接使用Void类型呢我觉得在逻辑上这是没有任何问题的。比如说var nothing new System.Void();或者var nothing new void();或者void GiveMeNothing() { }
void GiveMeNothingAgain()
{return GiveMeNothing();
}都是无法编译的那请问 System.Void 到底场景在哪里呢回答区 Cheng Chenvoid / System.Void 和 int / System.Int32 是不同的它是一种特殊的结构体仅用于 反射 场景中比如下面的例子class Program
{public static void Main(string[] args){Type voidType typeof(Program).GetMethod(Main).ReturnType;}
}在反射操作中必须要有一种类型可以描述 Main 方法的返回值这就是 System.Void 的应用场景。Jon根据 MSDNhttps://docs.microsoft.com/en-us/dotnet/api/system.void?viewnet-6.0 描述。Void 结构落于 System.Reflection 命名空间但在一般的程序开发中很少使用 Void 结构除了从 Object 上继承来的所有类型之外无任何东西。所以说你没有任何理由需要在代码中像下面这样写。var nothing new void();llewellyn falco我们在代码中用 null 来替代 void 类型代码如下public Type GetType(object o)
{var type o null ? typeof(void) : o.GetType();
}这样就轻松实现了 空对象引用模型也就省去了非常多的 空null 判断,非常方便接下来就可以这么写GetType(o).GetProperties().Select( .....点评区 我觉得 Cheng Chen 大佬说到点子上了我们在反射操作中比如要用 System.Void 来承载那些 void 类型的返回值学习了。