草庐IT

可选性

全部标签

c# - 为什么 C# 4.0 中的可选参数需要编译时常量?

还有一种方法可以使用可选方法参数的运行时值吗? 最佳答案 可选参数必须是常量,因为它们是作为属性值写出的。因此,它们继承了属性值所具有的所有限制。无法直接对运行时值进行编码。但是,您可以通过以下模式接近publicvoidMyApi(SomeTypetype=null){type=type??newSomeType();...} 关于c#-为什么C#4.0中的可选参数需要编译时常量?,我们在StackOverflow上找到一个类似的问题: https://st

c# - 委托(delegate)可以有可选参数吗?

在我尝试添加boolNetworkAvailable=true部分之前,我的以下代码运行良好。现在我在下面的第4行得到了一个Methodnameexpected编译时异常。voidNetworkStatus_AvailabilityChanged(objectsender,NetworkStatusChangedArgse){varnetworkAvailable=e.IsAvailable;SetUpdateHUDConnectedModed=newSetUpdateHUDConnectedMode(UpdateHUDConnectedMode(networkAvailable));

c# - 如何使用 SQL Server 将可为空的 guid 声明为 C# CLR 存储过程的可选参数

我正在编写一个部署在SQLServer2008R2(所以.Net3.5)上的C#存储过程,并希望将一个可选参数声明为可为null的guid。这是我首先尝试的:[Microsoft.SqlServer.Server.SqlProcedure]publicstaticvoidspCalcPerc(SqlGuidpID,SqlGuidsID=DBNull.Value)由于编译时错误而失败:Defaultparametervaluefor'sID'mustbeacompile-timeconstant这是因为DBNull.Value不是常量,这很痛苦。所以我尝试将声明更改为:[Microsof

c# - 使用 .NET 自定义序列化时测试可选字段

给定这样一个类:[Serializable]publicclassMyClass{stringname;stringaddress;publicMyClass(SerializationInfoinfo,StreamingContextcontext){name=info.GetString("name");if(/*todo:checkifavalueforaddressexists*/)address=info.GetString("address");}publicvoidGetObjectData(SerializationInfoinfo,StreamingContextco

c# - 可选参数后跟 Params

这个问题在这里已经有了答案:C#4.0,optionalparametersandparamsdonotworktogether(3个答案)关闭9年前。所以我看到可以有一个方法签名,其中第一个参数提供默认值,第二个参数是参数集合。我看不到的是实际使用第一个参数的默认值的方法。有可能吗?示例方法:voidWaitAllTask​​s(stringmessage="RunningTask.WaitAll",paramsTask[]tasks);我最初尝试在调用方法时省略消息参数,还尝试使用命名参数,这不适用于params。可以编译,但可以使用吗?

C# 4.0 可选参数 - 如何指定类型为 "Guid"的可选参数?

这是我的方法:publicvoidSomeQuery(stringemail="",GuiduserId=Guid.Empty){//dosomequery}userId给我一个错误,因为它必须是一个编译时常量,我明白这一点。但即使我声明了一个常量:privateconstemptyGuid=Guid.Empty;然后将方法签名更改为:publicvoidSomeQuery(stringemail="",GuiduserId=emptyGuid){//dosomequery}仍然没有爱。我错过了什么? 最佳答案 您是否尝试过将其设置

c# - 我们如何在 C#.net 中声明可选参数?

这个问题在这里已经有了答案:CanIgiveadefaultvaluetoparametersoroptionalparametersinC#functions?(6个答案)关闭9年前。我正在使用一种方法来执行某些操作,我希望通过使用C#中的可选参数只编写一次该方法,除了方法重载之外还有其他方法吗?

c# - if 子句中的可选空合并

这个问题在这里已经有了答案:Nullpropagationoperator,outparametersandfalsecompilererrors?(3个答案)关闭3年前。我的一位同事刚刚遇到了一个有趣的问题。我用下面的简单示例代码重现了这个问题。问题是编译器提示i在第三行使用时可能没有被赋值。我知道GetProperty不会被执行,如果o是null,那么i就不会执行被初始化,但在那种情况下我也不会评估inti2=i;。是否有关于可选值或空合并运算符的东西我不知道这与这里相关,或者这只是编译器不够智能的情况,无法知道i如果它不被使用没有初始化?voidTest(objecto){if(

c# - 这是 C# 4.0 编译器可选参数错误吗?

我正在编写自定义安全属性并出现奇怪的编译器行为...当我在同一个文件中使用该属性时,默认参数值工作正常:usingSystem.Security.Permissions;[System.Serializable]sealedclassFooAttribute:CodeAccessSecurityAttribute{publicFooAttribute(SecurityActionaction=SecurityAction.Demand):base(action){}publicoverrideSystem.Security.IPermissionCreatePermission(){r

c# - 具有一个强制参数和一个可选参数的 ASP.NET MVC 路由?

在过去一个月左右的时间里,我一直在开发大型MVC应用程序,但这是我第一次需要定义自定义路由处理程序,而且我遇到了一些问题。基本上我有两个参数要传递。第一个是必需的,第二个是可选的。我正在关注这个答案here.这是我的自定义路线:routes.MapRoute("MyRoute","{controller}/{action}/{param1}/{param2}",new{controller="MyController",action="MyAction",param1="",param2=""//Ihavealsotried"UrlParameter.Optional"here.});