草庐IT

c# - 为什么 Void 是一个结构?

我意识到在Microsoft.NETFramework中,void返回类型是一个结构。为什么?...publicvoidTestMethod(){}... 最佳答案 框架使用avaluetypecalledSystem.Void表示用于反射的void返回类型关键字。虽然void意味着缺少返回值,但它在技术上仍然是一种类型,为了在代码中这样表达它,它必须是结构(值类型)或类(引用类型)。参见MethodInfo.ReturnType举个例子。至于为什么框架设计者选择将System.Void做成一个结构而不是一个类,这是任何人的猜测,但

c# - 将 void 返回类型与 new Func<T, TResult> 一起使用

我在调用此示例函数的代码中使用匿名委托(delegate):publicstaticintTestFunction(inta,intb){returna+b;}代表看起来像这样:vardel=newFunc(TestFunction);我的问题是:如何为TResult指定一个void返回类型?以下不起作用:publicstaticvoidOtherFunction(inta,stringb){...}vardel=newFunc(OtherFunction); 最佳答案 如果没有返回类型,你想要Action:vardel=newAc

c# - 没有参数的 void Func

有一些类似的问题,但不完全像我的。对于没有返回值(即void)且没有参数的函数,是否存在等效的Func?相关问题是Funcnotreturninganything?但这不能回答void类型。(我需要它来请求从我的View模型到我的View的操作)。 最佳答案 你的措辞令人困惑。您的意思可能是“没有返回类型且没有参数的函数”。有简单的System.Action.Actionaction=()=>Console.WriteLine("helloworld");action();来自您的评论:ButIneedtofillinatypein

c# - 使 void 不是原始类型的设计原理是什么?

在void类型上使用反射Type.IsPrimitive时返回false。来自C++背景,这令人惊讶。查看C#6.0spec(第82页)没有提到void类型,这可能意味着它没有完全归类为一种类型。语言规范中是否有任何内容将void归类为其他内容。或者任何其他讨论或类似的提到这背后的原因? 最佳答案 为什么void不是原始类型?因为它不是你可以实例化的东西。它不是原始类型,也不是引用类型。什么都不是。EricLippert在thispostonSoftwareEngineering中描述了void类型的一些“问题”,它详细介绍了voi

c# - 为什么 C# 不允许我调用 void 方法作为返回语句的一部分?

我很好奇,当调用方法的返回类型也是void时,C#不支持调用void方法作为return语句的一部分是否有正当理由。publicvoidMethodA(){return;}publicvoidMethodB(){returnMethodA();}所以我们通常会看到这个:publicvoidMethodMeh(){if(expression){MethodA();return;}//Domorestuff}...当我们可以使用它时:publicvoidMethodAwesome(){if(expression)returnMethodA();//Domorestuff}这是由于C#处理v

c# - 如何测试 MethodInfo.ReturnType 是否为 System.Void 类型?

使用反射获取一个MethodInfo,我想测试返回的类型是否为typeofSystem.Void。测试它是否是System.Int32工作正常myMethodInfo.ReturnType==typeof(System.Int32)但是myMethodInfo.ReturnType==typeof(System.Void)不编译?目前我正在测试名称的字符串表示是否为“System.Void”,这似乎是非常错误的。 最佳答案 您不能使用System.Void直接,但可以使用typeof(void)访问它.一些人指出(例如here和评论

c# - C# 控制台应用程序中的 public static void Main() 和 private static void Main() 有什么区别?

有什么区别publicstaticvoidMain()和privatestaticvoidMain()在C#控制台应用程序中?特别是因为它与Main()方法有关(我了解public和private之间的区别)。 最佳答案 要作为应用程序的起点,Main方法不需要是public。如果您确实决定将其设为public,则它可能会被其他类或程序集调用。通常您不需要这样做,因此您可以将其设为private。将其设为public的一个可能用例是允许自动化测试调用它。 关于c#-C#控制台应用程序中的

c# - 为什么 "async void"单元测试无法识别?

asyncvoid单元测试无法在VisualStudio2012中运行:[TestClass]publicclassMyTestClass{[TestMethod]publicasyncvoidInvisibleMyTestMethod(){awaitTask.Delay(1000);Assert.IsTrue(true);}}如果我想进行异步单元测试,测试方法必须返回一个任务:[TestMethod]publicasyncTaskVisibleMyTestMethod(){awaitTask.Delay(1000);Assert.IsTrue(true);}为什么会这样?并不是说我绝

c# - 不能将类型 void 隐式转换为对象。 .NET MVC 部分 View 结果

我有以下Controller操作:[ChildActionOnly]publicvirtualPartialViewResultListActions(intid){varactions=meetingActionRepository.GetAllMeetingActions(id);returnPartialView(actions);}以及以下操作链接(使用t4MVC和razor语法)@Html.RenderAction(MVC.MeetingActions.ListActions(Model.MeetingId))但是这给了我错误:cannotimplicitlyconvertt

c# - 在 void 方法中使用 return 是不好的做法吗?

想象一下下面的代码:voidDoThis(){if(!isValid)return;DoThat();}voidDoThat(){Console.WriteLine("DoThat()");}可以在void方法中使用return吗?它有任何性能损失吗?或者写这样的代码会更好:voidDoThis(){if(isValid){DoThat();}} 最佳答案 在void方法中返回还不错,这是invertifstatementstoreducenesting的常见做法.减少方法的嵌套可以提高代码的可读性和可维护性。实际上,如果您有一个没