是否有C#速记为其方法';什么是退货类型?

是否有C#速记为其方法';什么是退货类型?,c#,shorthand,C#,Shorthand,C#中是否有将值强制转换为其方法的返回类型的缩写?例如,在这个方法中,是否有一种简写的方法将GetInt的返回值转换为其返回类型“int”,而不是离散地键入“int” 我知道这是一个非常简单的例子,你们中的许多人会说“把(int)放在那里比较容易”,但如果这是可能的话,对于我正在尝试做的一些事情来说,这将是一个非常好的语法糖。这将非常类似于已经存在的“default”关键字速记 // Return type of SomeFunc cannot be changed by me object S

C#中是否有将值强制转换为其方法的返回类型的缩写?例如,在这个方法中,是否有一种简写的方法将GetInt的返回值转换为其返回类型“int”,而不是离散地键入“int”

我知道这是一个非常简单的例子,你们中的许多人会说“把(int)放在那里比较容易”,但如果这是可能的话,对于我正在尝试做的一些事情来说,这将是一个非常好的语法糖。这将非常类似于已经存在的“default”关键字速记

// Return type of SomeFunc cannot be changed by me
object SomeFunc();

public int GetInt()
{
    object Value = SomeFunc();
    // I know "Value" should be of type "int" here.
    return ({ReturnType})Value;
}

我可以考虑使用泛型(它不适用于int,但适用于自定义类型):

公共类Foo{}
公共静态对象值=null;
公共静态T GetFoo(),其中T:Foo
{
返回(T)值;
}

是否存在此类功能没有我知道的。

你能加上这样的语法糖吗? 可能是的,但没有一个选项比显式转换更简单。您可能会丢失一些IDE功能。你可能会违背良好的做法。我想反射、装饰、动态类型、开关表达式等可能在这里有用

隐式转换?始终可以使用隐式转换为其任何基类的派生类。一些有用的链接-

如果您确信您的对象是可安全强制转换的,您可以使用另一种语法,不会引发异常,
值为int


在一天结束时,这些都不需要首先考虑,除非有一个用例可以帮助他们大展拳脚。语法糖甚至与用例IMO不太接近,尤其是对于静态类型的语言。

首先为什么要使用
对象
?如果你知道这个类型,为什么不使用实际的类型来存储呢?@user3163495给出一个实际的例子。有隐式类型转换。如果在返回类型和实际值之间存在隐式转换,则根本不需要转换。可以为新类型创建隐式强制转换运算符。但是,对象不能隐式转换为任何其他对象。如何将字符串或
图像
转换为“int”呢?@PanagiotisKanavos这是不必要的,因为我的问题不是要征求您对我是否应该这样做的意见。@user3163495相反,这非常重要。同样,如果可以使用隐式强制转换,则不需要这样的功能。为什么不能使用隐式强制转换?因为您在这方面使用了最严格的类型—对象不能隐式转换为任何其他类型。编译器根本没有足够的信息来决定强制转换是安全的还是不安全的Q
C语言中是否有将值强制转换为其方法返回类型的速记?
a
No
。这与
(int)value
(int)value
有什么不同。您可以指定为Foo而不是确切的类型,而是基本类型。我的意思是,在topicstarter的案例中,泛型的概念可能值得一看。