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# – 设置方法声明的多个返回值所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)