经验总结41--方法的可选参数

方法可使用可选参数。

public void GetData(string id,string name="",string type="")

这种方式可以用于扩展,比如新增一个查询参数,写在后面即可,不需要去修改以前的方法。

其实这是一种偷懒的方式,正规的使用应该写很多的重载方法,因为参数不一样。

但是重载的话,又会导致代码重复无意思,及时使用数组传参或者传空参数之类的方法出现,并不方便。

还有一种方法是使用可用类型,比如int? id。

但可空类型也是必填参数,只能放在可选参数之前,且使用的时候必须传参,就得修改以前的方法。

那么最后还是使用可选参数,但也有额外问题需要解决。

当使用分页查询的时候,需要对参数进行判断,来拼接sql字符串或者筛选。

那么就得自己定义规则,字符串可以判断为空。

if(name!="")

int类型可以判断-1,可以自行定义,但尽量避免该值为某个类型值。

if(id!=-1)

bool类型,也使用int的-1,因为你没法传true或者false,否则判断时只能查到一半数据。

if(type!=1)

true就传1,false传0,然后自己处理代码。

时间: 2024-08-01 19:07:10

经验总结41--方法的可选参数的相关文章

@requesMapping的可配置参数和标注的处理方法的可选参数

使用@requesMapping标注的处理函数包括的可选参数,除了HttpServletRequest, HttpServletResponse, HttpSession这些web应用中常见的参数及之前提到过的@PathVariable外,还可以包括以下可选的参数,其中大部分参数的顺序没有特殊要求的. java.util.Locale 当前请求所属的区域设置. java.io.InputStream或java.io.Reader 用来读取request content,相当于 request.g

c#方法重载,可选参数,命名参数。

其实这里没什么可说哦,c++的语法大同小异.先看一段代码. class Program { public static void Test(int a) { Console.WriteLine("只有一个参数a=={0}", a); } public static void Test(int a, int b = 5) { Console.WriteLine("有两个参数a=={0},b=={1}", a, b); } static void Main() { Te

C#:可选参数的陷阱 [转]

一.背景: 互联网行业,为了降低程序维护.升级的部署风险,往往会将程序拆分成很多项目,编译成多个dll部署,这样发布的时候,只需要部署修改过的dll即可. 二.问题: 有一个函数,在很多个地方被使用: public fun1(A a ,B b) { //代码主体 } 突然有一天,有的地方调用的时候需要加入一个参数C c,但是又不想其他客户程序有任何变动,可以充分利用.net4.0新增的可选参数特性,这样改: 方法一:使用可选参数 public fun1(A a ,B b,C c = 1) { /

c#可选参数的一个陷阱

一.背景: 互联网行业,为了降低部署风险,往往会将程序拆分成很多项目,编译成多个dll部署,这样修改的时候,只需要部署修改过的dll即可. 二.问题: 有一个函数,在很多个地方被使用: public fun1(A a ,B b) { //代码主体 } 突然有一天,有的地方调用的时候需要加入一个参数C c,但是又不想其他客户程序有任何变动,可以这样改: 方法一:使用可选参数 public fun1(A a ,B b,C c = 1) { //代码主体 } 程序修改完后,在本地程序完美运行,将dll

c# 方法参数(传值,传引用,ref,out,params,可选参数,命名参数)

 一.方法参数的类型----值类型和引用类型 当方法传递的参数是值类型时,变量的栈数据会完整地复制到目标参数中即实参和形参中的数据相同但存放在内存的不同位置.所以,在目标方法中对形参所做的更改不会对调用者的初始变量产生任何影响. 当方法传递的参数是引用类型是,只是将变量的引用复制到目标参数中,实参和形参的引用指向内存中的同一位置.所以,在目标方法中对形参所做的更改会影响调用者的初始变量. 二.一些特殊的方法参数 1.引用参数---ref (使值类型的变量做方法参数时也可以传引用) 一些数据类型(

[转]BX9054: 各浏览器对 document.execCommand 方法的首参数可选值范围存在差异

作者:钱宝坤 标准参考 无. 问题描述 execCommand 方法通常用于控制可编辑的 IFRAME 内容,制作富文本编辑器. 但他现在为止还是非标准的,方法的首参数 Commmands 的可选值由各个浏览器厂商制定,支持程度并不统一. 造成的影响 使用仅有某个浏览器支持的 Commmands 参数会造成其他浏览器运行时脚本出错,从而影响其他浏览器内正常脚本继续执行. 受影响的浏览器 所有浏览器   问题分析 document.execCommand 方法提供了对浏览器内置命令调用的接口,他暂

jquery ajax 方法及各参数详解

jquery ajax 方法及各参数详解 1.$.ajax() 只有一个参数:参数 key/value 对象,包含各配置及回调函数信息. 参数列表: 参数名 类型 描述 url String (默认: 当前页地址) 发送请求的地址. type String (默认: "GET") 请求方式 ("POST" 或 "GET"), 默认为 "GET".注意:其它 HTTP 请求方法,如 PUT 和 DELETE 也可以使用,但仅部分

Spring MVC 之请求处理方法可接收参数(二)

请求处理方法可接收参数 今天学习了前三个方法. 1.作用域对象2.单个表单提交数据3.表单数据封装的Bean对象 首先创建一个实体对象. 1 package com.cy.springannotation.entity; 2 /** 3 * 定义一个表单实体类 4 * @author acer 5 * 6 */ 7 public class UserBean { 8 //要求属性名必须要和表单的参数名一样的! 9 private String username; 10 private Strin

可选参数、命名参数、.NET的特殊类型、特性

1.可选参数和命名参数    1.1可选参数        语法:            [修饰符] 返回类型 方法名(必选参数n,可选参数n)        注意:            1.必选参数可以不存在,也可以有多个:可选参数可以有1个或多个            2.可选参数必须放在必选参数之后            3.可选参数在定义时需要赋初始值            4.可选参数之间也需要使用,进行分隔            5.调用可选参数时,不能跨参数赋值    1.2命名