Q
意外的行爲()
4
A
回答
10
它的工作,因爲它選擇這個過載:
public static String Format(IFormatProvider provider, String format, params Object[] args) { ... }
一個null
供應正常,且無參數的可變參數也行,所以它只是打印出的字符串。
直觀地說,我們可能會認爲此重載:
public static String Format(String format, Object arg0) { ... }
當然,如果它做選擇,我們會得到一個ArgumentNullException
。
2
它可能會將請求解釋爲對String.Format(IFormatProvider提供程序,字符串格式,params對象[] args)的調用,並將空值作爲提供程序和參數,但將「Hello」作爲格式進行覆蓋。返回「你好」。
如果你想要一個空的結果使用String.Empty
4
它選擇超載
public static string Format(IFormatProvider provider, string format, params object[] args)
,因爲你的第二個參數有string
型(無需轉換)。因此,該過載更接近,比具有兩個參數的過載(它需要從string
到object
轉換):
String.Format(null, 5);
在這種情況下轉換爲一個對象是:
public static string Format(string format, object arg0)
可以通過調用看到差異選擇,你有一個例外(實際上沒有在int
和string
之間的隱式轉換)。
您可以在msdn上選擇best function member瞭解更多信息。
相關問題
- 1. 意外的行爲
- 2. 意外的行爲()
- 3. 意外行爲
- 4. 意外行爲
- 5. 意外行爲
- 6. 意外行爲()
- 7. 意外行爲
- 8. 意外行爲
- 9. 意外行爲
- 10. 意外行爲
- 11. 意外行爲
- 12. 意外行爲
- 13. 意外行爲
- 14. 意外行爲
- 15. 意外pyparsing行爲
- 16. 意外in_array()行爲
- 17. WC_LISTVIEW意外行爲
- 18. dynamic_pointer_cast意外行爲
- 19. Cufon.refresh意外行爲
- 20. 意外pandas.Series.replace()行爲
- 21. 意外行爲list.append
- 22. $ watchGroup意外行爲
- 23. 意外行爲:左
- 24. 意外行爲ThreadPool.QueueUserWorkItem
- 25. 意外行爲NSMutableOrderedSet
- 26. 意外Class.getMethod行爲
- 27. numpy.bitwise_and.reduce行爲意外?
- 28. SimpleInjector意外行爲
- 29. Memcpy意外行爲
- 30. 意外行爲Mongoid