2019年1月31日 星期四

C#中命名参数和可选参数 MoveAndResize(x: 10,y: 20,width: 30,height: 40);

https://blog.csdn.net/cloproad/article/details/78855194


調用方法時,變量名不需要添加到調用中比如有如下的方法用於移動矩形並在移動之後設置他的寬和高:
有兩種調用方式:
1. MoveAndResize(10,20,30,40); 
2. MoveAndResize(x: 10,y: 20,width: 30,height: 40);

第一種方式是常用的也非常簡單,但是從調用上看不出來所用參數的含義。
第二種方式採用了命名參數,也就是:參數名: value   的形式,這種方式可以直觀的體現初始化什麼參數,還可以更改調用順序,比如:

MoveAndResize(y: 20,x: 10,width: 30,height: 40);

但是第二種方式用起來比較繁瑣,實際在編輯器中也有代碼提示等相關的功能,比如鼠標放在方法名上,原方法的相關的定義都出現了。
不過命名參數的實際用處在於他和可選參數的結合使用。可選參數:顧名思義,在方法調用的時候可以不用給該參數賦值。比如下面的方法有一個參數:isTest,當isTest為true  時,進行某些操作:


public void Test(int a , bool isTest = false)
在調用的時候當我不需要與第二個參數相關功能的時候可以不用賦值:

Test(10);

可選參數使用:必須要為該參數設置默認值,而且可選參數必須放在函數參數列表的最後。
命名參數與可選參數的結合使用,比如現在有一個方法:

public void TestM(int a ,int b = 1 , int c = 2, bool d = false , string e = "test")
當我調用的時候,如果只想用到其中的a,d 參數怎麼辦?,可以這樣調用
1. 將d 前面的參數全部初始化,其中可選參數用默認值初始化:

    TestM(2,1,2,true);

2. 使用命名參數:

    TestM(2,d: true);

注意上面的情況,當有多個可選參數時,命名參數的作用凸顯,可以傳遞任何可選參數而不關心到底有幾個可選參數和他們的順序。
--------------------- 
作者:cloproad 
来源:CSDN 
原文:https://blog.csdn.net/cloproad/article/details/78855194 

版权声明:本文为博主原创文章,转载请附上博文链接!


沒有留言:

張貼留言

WPF聊天室应用(ASP.NET Core SignalR)

  WPF聊天室应用(ASP.NET Core SignalR) https://www.bilibili.com/video/BV1Q741187Si?p=2 https://www.bilibili.com/video/BV1UV411e75T?from=search&...