c#函数的返回值门类是否必须明确写出,或者有没有能返回两种类型的数据的方法

c#函数的返回值类型是否必须明确写出,或者有没有能返回两种类型的数据的方法
比如,
定义int a=5;
判断a是否大于10,如果大于10返回a的值,否则,不返回任何值。
public void?int  GetIntOrNull()//这个地方返回值类型应该写什么啊,void还是int?

        int a = 5;
                if(a>10)
                {
                    return a;
                 
                }
                else
                {
                    return null;//这里这么写对吗?
                }
}



------解决思路----------------------
用可空类型就行了,Nullable<int>,也可以写作int?
public int?  GetIntOrNull()//这个地方返回值类型应该写什么啊,void还是int?

        int a = 5;
                if(a>10)
                {
                    return a;
                 
                }
                else
                {
                    return null;//这里这么写对吗?
                }
}

调用
int? result = GetIntOrNull();
if(result.HasValue)
{
        //有返回值a
       Console.Write(result.Value);
}
else
{
         返回空(无返回值)
}
------解决思路----------------------
实际上对于你这种情况,处理办法很多,你这样的想法只是在为难编译器而已。。。
比如我可以弄个函数判断a是否是有效数据(大于10)
int GetData(){return a;}
bool IsValid(){return a>10;}
当IsValid为true时就去用GetData取a的值否则不取;
或者想偷懒就用int?

static int a = 5;
static int? getData()
{
int? result = null;
if (a > 10)
result = a;
return result;
}
public static void Main (string[] args)
{
int? iret = null;
a = 5;
iret = getData ();
Console.WriteLine (iret==null?"Is null":iret+"");
a = 50;
iret = getData ();
Console.WriteLine (iret==null?"Is null":iret+"");
}


不过个人并不推荐用int? ,看着很不爽
------解决思路----------------------
楼主,你的核心问题在这里:
1、void跟int不会同时出现,当然也不会跟其他类型同时出现,他只单独出现。
2、void说明方法没有返回值 void Fun(){}
3、把void换成具体类型,说明方法最后必须return该类型的值 int Fun(){return 0;}
4、类型后面加问号代表返回值可为空null