函数被调用,前面有类型:(T)func(param1,param2)。这叫什么,它是什么?

时间:2015-05-27 23:16:53

标签: c#

在函数前面调用函数:(T)func(param1,param2)。这叫什么,它是什么?我假设它正在强制返回类型?

同样,模式采用以下形式:

(T)func(params)

示例:

(int)Mathf.Log(level, 2f) // it's an example from unity, level is of type int

3 个答案:

答案 0 :(得分:3)

(T)是一个明确的演员。请参阅此处的文档,在“明确转化”标题下:https://msdn.microsoft.com/en-us/library/ms173105.aspx

func(params)位只是一个方法调用。演员阵容不是其中的一部分,你只是投射结果。

// cast the result of a method call
var i = (int)Mathf.Log(level, 2f);

// cast a random object
var s = (string)someObject;

答案 1 :(得分:3)

这不是模式本身(取决于“模式”的确切含义)......它只是C#。听起来好像你对出现一个方法被转换为原始类型的事实感到困惑?

它实际上做的是将Mathf.Logfloat)的返回类型转换为int

所以这个:

int log = (int)Mathf.Log(level, 2f);

等同于:

float result = Mathf.Log(level, 2f);

int log = (int)result;

答案 2 :(得分:1)

这只是cast; Math.Log会返回double,因此需要进行投射以使其成为int(截断结果)