c# – 设置方法声明的多个返回值

c# – 设置方法声明的多个返回值,第1张

概述我有如下功能: public var UpdateMapFetcher(int stationID, int typeID) 我需要这个函数来返回字符串或int. 我的返回值设置如下 if (finaloutput == "System.String") { // param1[i] = Convert.ChangeType(typeID_New.ToStr 我有如下功能:
public var UpdateMapFetcher(int stationID,int typeID)

我需要这个函数来返回字符串或int.

我的返回值设置如下

if (finaloutput == "System.String")        {            // param1[i] = Convert.ChangeType(typeID_New.ToString(),typeof(string));            returnvalue = returnvalue.ToString();            return returnvalue;        }        else if (finaloutput == "system.int32")        {            int a=0;            a = Convert.ToInt32(returnvalue);            return a;        }

如何在动态环境中将一种数据类型作为返回值.

解决方法 我的直觉告诉我,你正在尝试将字符串值转换为某种类型.在这种情况下,您可以使用:
public T UpdateMapFetcher<T>(int stationID){    //var someValue = "23";    return (T)Convert.ChangeType(someValue,typeof(T));}//thenvar typed = UpdateMapFetcher<int>(6);

如果你不知道T,你可以使用映射(0-int,1-string等):

public object UpdateMapFetcher(int stationID,int type){    var typeMap = new []{ typeof(int),typeof(string)};    //var someValue = "23";    return Convert.ChangeType(someValue,typeMap[type]);}//thenvar untyped = UpdateMapFetcher(6,0/*0 is int*/);if (untyped.GetType() == typeof(int)){ /*is int*/}

另一种解决方案是使用隐式转换:

public class StringOrInt{    private object value;    public ValueType Type { get; set; }    public static implicit operator StringOrInt(string value)    {        return new StringOrInt()        {            value = value,Type = ValueType.String        };    }    public static implicit operator StringOrInt(int value)    {        return new StringOrInt()        {            value = value,Type = ValueType.Int        };    }    public static implicit operator int(StringOrInt obj)    {        return (int)obj.value;    }    public static implicit operator string(StringOrInt obj)    {        return (string)obj.value;    } }public enum ValueType{    String,Int}

然后(简化):

public static StringOrInt UpdateMapFetcher(int stationID,int typeID){    if (typeID == 0)        return "Text";    return 23;}private static voID Main(string[] args){    var result = UpdateMapFetcher(1,1);    if (result.Type == ValueType.String) { }//can check before    int integer = result;//compiles,valID    string text = result;//compiles,fail at runtime,invalID cast      }
总结

以上是内存溢出为你收集整理的c# – 设置方法声明的多个返回值全部内容,希望文章能够帮你解决c# – 设置方法声明的多个返回值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1249698.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存