Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 返回值的隐式类型转换_C#_Implicit Conversion - Fatal编程技术网

C# 返回值的隐式类型转换

C# 返回值的隐式类型转换,c#,implicit-conversion,C#,Implicit Conversion,我有一个返回long的函数,但返回的值是整数。我知道隐式转换,但从技术上讲,函数返回类型与返回值的类型不匹配。代码编译和运行时不会出现警告或错误。这里发生了什么 公共静态长GetIndexint索引{ int[]标记=新的int[5]{99,98,92,97,95}; 返回标记[索引]; } 公共静态无效字符串[]args { 长n=GetIndex3; } 是的,return语句将应用隐式转换。下面是一个简单的例子: 公共长方法 { int值=10; 返回值; } 这相当于: 公共长方法 {

我有一个返回long的函数,但返回的值是整数。我知道隐式转换,但从技术上讲,函数返回类型与返回值的类型不匹配。代码编译和运行时不会出现警告或错误。这里发生了什么

公共静态长GetIndexint索引{ int[]标记=新的int[5]{99,98,92,97,95}; 返回标记[索引]; } 公共静态无效字符串[]args { 长n=GetIndex3; }
是的,return语句将应用隐式转换。下面是一个简单的例子:

公共长方法 { int值=10; 返回值; } 这相当于:

公共长方法 { int值=10; 长值返回=值; 返回值返回; }
因此,如果您希望第二个可以正常工作,只需考虑第一个就可以了。

是的,return语句将应用隐式转换。下面是一个简单的例子:

公共长方法 { int值=10; 返回值; } 这相当于:

公共长方法 { int值=10; 长值返回=值; 返回值返回; }
因此,如果你希望第二个能起作用,就把第一个想象成正是这样做的。

装箱/拆箱。将int[]标记更改为long[]标记=新的long[]@michasaaucer:这里没有装箱或取消装箱操作。装箱/取消装箱。将int[]marks更改为long[]marks=new long[]@michasaaucer:这里没有装箱或拆箱操作。谢谢,我们认为必须进行转换,但这似乎有点危险。return语句是否会尝试对所有类型强制转换?公共静态对象getIndexintIndex@JoshSharkey:它将执行与变量赋值完全相同的隐式转换。是的,如果您返回对象,这将包括装箱。另外,我强烈建议遵循.NET命名约定,即使对于示例中的方法名也是如此。这里没有什么危险,除非你也把我答案中第二个例子中的转换计算为危险。你在想什么样的危险?如果return语句不能进行转换,会不会抛出错误?@JoshSharkey:这是最简单的尝试:但这将是一个编译时错误,就像给不兼容的变量赋值一样。您可以将return语句看作是赋值给变量。谢谢,我们认为必须进行转换,但这似乎有点危险。return语句是否会尝试对所有类型强制转换?公共静态对象getIndexintIndex@JoshSharkey:它将执行与变量赋值完全相同的隐式转换。是的,如果您返回对象,这将包括装箱。另外,我强烈建议遵循.NET命名约定,即使对于示例中的方法名也是如此。这里没有什么危险,除非你也把我答案中第二个例子中的转换计算为危险。你在想什么样的危险?如果return语句不能进行转换,会不会抛出错误?@JoshSharkey:这是最简单的尝试:但这将是一个编译时错误,就像给不兼容的变量赋值一样。您可以将return语句看作是赋值给变量。