精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何將字符串動態轉換為指定的值類型

開發 后端
我們經常會遇到將字符串轉換為值類型的問題,比如"123" 轉換為一個Int32類型,這個很簡單,我們只要調用int.Parse 函數就可以實現。筆者今天要說的是,一些應用中往往在編碼階段無法知道字符串需要轉換成的值類型的具體類型,而需要在運行時動態指定類型進行轉換,遇到這種問題,我們如何解決?

先看一個字符串動態轉換的典型例子

如下函數,我們只知道value 是一個基本值類型,比如(System.Int32, System.Int16, System.Double 等等) 或者是一個字符串類型。但我們無法在編碼時確定這個value 具體是什么類型,它可能是由一個外部組件從某個數據源中讀出來的基本類型中的一種類型的實例或者是字符串類型實例。

這個函數希望實現比較value 是否在minValue, maxValue這兩個字符串對應的數值區間類,其中minValue 和 maxValue 構成一個閉區間,即

value in [minValue, maxValue]

public static bool MyComparer(object value, string minValue, string maxValue)

要解決這個問題,我們需要解決兩個基本問題。

1. 如何比較value 和 minValue, maxValue

2. 如何將minValue 和 maxValue 轉換到value 對應的數據類型

首先我們來看如何進行比較

所有的基本值類型和string 類型都實現 IComparable這個接口。我們可以指定 value 為 IComparable,然后調用CompareTo來進行比較。不過這里有個問題,CompareTo 函數的參數obj 雖然是一個 object 類型,但這個 obj 的類型必須和 value 一致,否則將發生異常。也就是說我們不能把minValue 任意轉換成某個類型比如 long 帶進去,而需要將 minValue 和 maxValue 轉換成和 value 一樣的類型才行。

下面我們就來討論如何將字符串動態轉換為指定的值類型

我們需要實現下面的函數:

public static object ToType(Type type, string value)

 type 為指定的類型,value 為輸入的字符串。

首先我們知道所有的基本值類型都有一個叫 Parse 靜態函數,我們只要把這個靜態函數反射出來,就可以通過這個靜態函數將字符串動態轉換成對應的值類型。

下面代碼給出如何反射出這個靜態函數。通過向對象type(Type類型)的GetMethods 函數輸入 BindingFlags.Static
    | BindingFlags.Public 參數,我們可以枚舉出這個類型所有的靜態公共函數。

然后我們判斷這個函數的名稱是否為 "Parse" ,由于 Parse 函數有多個重載,但一個參數的重載只有 Parse (String)

所以我們需要判斷mi 只有一個參數,這時取到的 mi 就是 Parse (String) 函數。

MethodInfo parseMethod = null;

foreach (MethodInfo mi in type.GetMethods(BindingFlags.Static
    | BindingFlags.Public))
{
    if (mi.Name == "Parse" && mi.GetParameters().Length == 1)
    {
  parseMethod = mi;
  break;
    }
}

接下來就是如何調用這個函數來動態轉換字符串了。

如下面代碼,我們調用MethodInfo 的 Invoke 方法來動態調用這個函數,由于是靜態函數,第一個參數 obj 傳入null. 并在第二個參數中帶入value 這個參數。

parseMethod.Invoke(null, new object[] { value });

下面給出字符串動態轉換為指定類型的完整代碼

using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;

namespace Eagelt.Convert
{
    public class ConvertString
    {
  public static object ToType(Type type, string value)
  {
if (type == typeof(string))
{
    return value;
}

MethodInfo parseMethod = null;

foreach (MethodInfo mi in type.GetMethods(BindingFlags.Static
    | BindingFlags.Public))
{
    if (mi.Name == "Parse" && mi.GetParameters().Length == 1)
    {
  parseMethod = mi;
  break;
    }
}

if (parseMethod == null)
{
    throw new ArgumentException(string.Format(
  "Type: {0} has not Parse static method!", type));
}

return parseMethod.Invoke(null, new object[] { value });
  }
    }
}

MyComparer 函數的完整代碼

public static bool MyComparer(object value, string minValue, string maxValue)
  {
IComparable comparableObj = value as IComparable;

object min;
object max;

if (comparableObj == null)
{
    throw new ArgumentException(string.Format(
  "Type: {0} does not inherit from IComparable", value.GetType()));
}

min = ConvertString.ToType(value.GetType(), minValue);
max = ConvertString.ToType(value.GetType(), maxValue);

return comparableObj.CompareTo(min) >= 0 && comparableObj.CompareTo(max) <= 0;

  }
 

 測試代碼

Console.WriteLine(MyComparer(2, "1", "3"));
Console.WriteLine(MyComparer(3, "1", "2"));
Console.WriteLine(MyComparer((byte)2, "1", "3"));
Console.WriteLine(MyComparer((double)3, "1", "2"));
Console.WriteLine(MyComparer("3", "1", "2"));
 

 測試結果

True
False
True
False
False

最后提一個簡單的問題,供大家思考,如果我們需要將字符串動態轉換成我們自己定義的復雜類型,如何實現呢?

比如我們有一個結構

struct UInt128

{

public ulong Low;

public ulong High;
}

我們將這個結構的實例對象傳入到函數

Console.WriteLine(MyComparer((UInt128)2, "1", "3"));

這樣可以嗎?怎樣做才能做到呢?

【編輯推薦】

  1. C# 2010命名和可選參數的新特性
  2. 詳解C# 4.0中必選參數與可選參數混合的問題
  3. 在.NET上如何根據字符串動態創建控件
  4. 檢測含有中文字符串的實際長度
  5. 深入理解C# 3.0的五項主要改進
責任編輯:彭凡 來源: cnblogs
相關推薦

2024-02-19 15:38:08

JsonPython字符串

2021-12-29 16:40:54

Python語言字符串

2024-01-04 09:17:03

前端開發CSV 格式JSON 字符串

2009-11-25 16:55:45

PHP函數explod

2009-07-15 16:56:59

Jython類型Java類型

2023-10-16 09:26:48

CSS類型轉換

2021-11-29 00:17:41

JS符串轉換

2009-12-01 14:00:37

PHP字符串轉換為數值

2017-05-25 15:14:36

2020-12-17 08:08:15

CentOS

2024-03-12 07:35:39

Python字符串列表

2021-08-26 09:46:22

JavaScript字符串URL

2010-03-31 19:15:25

Oracle函數

2009-07-31 14:09:41

c#時間格式轉換

2024-05-30 08:40:41

大型語言模型LLM人工智能

2016-12-30 13:16:51

字符串算法代碼

2010-11-26 14:09:32

MySQL內置函數

2010-09-09 11:48:00

SQL函數字符串

2023-03-13 07:43:51

PHP類型轉換

2011-04-08 10:16:13

文本文件ACCESS數據庫
點贊
收藏

51CTO技術棧公眾號

日韩人妻精品一区二区三区| 亚洲最大成人网色| 欧美福利第一页| 六九午夜精品视频| 尤物视频一区二区| 欧美精品与人动性物交免费看| 夜夜狠狠擅视频| 亚洲经典在线| 日韩在线中文字| 日韩无码精品一区二区| 久久国内精品| 欧美日韩国产中文字幕| 黄瓜视频免费观看在线观看www| 人妻一区二区三区免费| 人禽交欧美网站| 国语自产精品视频在免费| 一级片久久久久| 老司机aⅴ在线精品导航| 69堂成人精品免费视频| 黄色免费观看视频网站| 丁香花在线高清完整版视频| 亚洲国产精品精华液ab| 精品一区久久久久久| 国产精品永久久久久久久久久| 亚洲一区日韩在线| 久久久久五月天| 免费在线观看黄色小视频| 视频一区中文| 精品视频久久久久久| 国产香蕉精品视频| 麻豆国产一区| 欧美私模裸体表演在线观看| 国产精品亚洲αv天堂无码| 中文字幕免费高清电视剧网站在线观看 | 国产精品视频a| 日韩精品一二三四| 热久久免费视频精品| 日本特黄特色aaa大片免费| 自拍偷拍欧美专区| 欧美成人合集magnet| 国产小视频你懂的| 清纯唯美日韩| 伊人久久免费视频| 色欲AV无码精品一区二区久久| 人体久久天天| 亚洲乱码一区av黑人高潮| 波多野结衣视频播放| 国产精品成人自拍| 精品第一国产综合精品aⅴ| 久久久久久国产精品日本| crdy在线观看欧美| 宅男在线国产精品| 波多野结衣在线免费观看| 精品视频在线播放一区二区三区| 制服视频三区第一页精品| 国产aⅴ爽av久久久久| 亚洲天堂网站| 日韩一区二区三区电影| 久久久久亚洲av片无码v| 亚洲日本va| 精品人在线二区三区| 成熟妇人a片免费看网站| 欧美美女在线直播| 精品亚洲永久免费精品| 性欧美一区二区| 久久国产精品亚洲人一区二区三区 | 精品国产免费人成电影在线观看四季 | 免费亚洲电影| 在线国产亚洲欧美| 中文字幕精品一区二区三区在线| 成人在线精品| 欧美成人女星排名| 无码人妻aⅴ一区二区三区| 国产欧美日韩精品一区二区免费 | 黄色一级片在线免费观看| 韩日精品在线| 91成人精品网站| 区一区二在线观看| 国内精品久久久久影院一蜜桃| 亚洲综合在线做性| 男人的天堂在线| 国产精品第五页| 男人添女人下部高潮视频在观看| 精品国产免费人成网站| 6080国产精品一区二区| 成人在线电影网站| 欧美电影三区| 91精品国产亚洲| 亚洲图片视频小说| 白白色 亚洲乱淫| 亚洲国产一区二区三区在线| а天堂中文在线官网| 日韩欧美在线视频日韩欧美在线视频| 一区二区三区入口| 丁香婷婷成人| 日韩午夜在线视频| 精品美女久久久久| 免费不卡在线观看| 国产综合精品一区二区三区| 伊人免费在线| 精品国产福利在线| 国产精品久久久久久久av福利| 日韩高清成人在线| 久久精品视频播放| 精品人妻无码一区二区性色| 精品亚洲免费视频| 欧美一区二区三区四区在线观看地址| 欧美精品videos另类| 狠狠干狠狠久久| 91香蕉视频在线观看视频| 精品中文一区| 欧美精品18videosex性欧美| 伊人久久亚洲综合| 久久色.com| 国产一线二线三线女| 精品久久99| 日韩精品视频在线播放| 精品97人妻无码中文永久在线 | www.污网站| 国产成人短视频在线观看| 久久久中精品2020中文| 国产毛片毛片毛片毛片| 国产精品丝袜久久久久久app| 阿v天堂2017| 51亚洲精品| 欧美二区在线播放| av中文字幕播放| 成人免费在线视频观看| 日本激情综合网| 欧美日韩激情| 日本久久久a级免费| 亚洲人成色777777老人头| 亚洲小说欧美激情另类| 深夜视频在线观看| 欧美涩涩网站| 国产精品国模大尺度私拍| 日韩激情av| 日韩精品一区二区在线| 欧美激情精品久久| 国产高清视频一区| 毛片av在线播放| 91九色鹿精品国产综合久久香蕉| 欧美另类交人妖| 国产黄色小视频在线观看| 中文字幕一区二区不卡| 亚洲图色中文字幕| 51精产品一区一区三区| 3d动漫精品啪啪一区二区三区免费| 免费a级在线播放| 欧美一级艳片视频免费观看| www青青草原| 国产99久久久国产精品| 免费无码毛片一区二三区| 欧美大胆a级| 国产成人精品久久二区二区| 成年人视频在线看| 精品视频免费看| 97在线观看视频免费| 国产精品一级二级三级| 欧美久久久久久久久久久久久久| 91亚洲无吗| 97超级碰碰人国产在线观看| 外国精品视频在线观看| 色8久久精品久久久久久蜜 | 日本一区二区在线看| 成人久久精品视频| 后进极品白嫩翘臀在线播放| 亚洲精品456在线播放狼人| 无码人妻一区二区三区免费| 国产精品福利av| 日本精品一二三| 国产精品婷婷| 亚洲一区二区在线看| 亚洲成人黄色| 欧洲亚洲妇女av| 在线观看h片| 欧美久久久久免费| 日韩三级免费看| 欧美精彩视频一区二区三区| 下面一进一出好爽视频| 噜噜噜在线观看免费视频日韩 | 欧美性x x x| 国产成人av电影| 成人小视频在线看| 亚洲视频在线免费| 欧美精品尤物在线| 日韩在线视频一区二区三区| 欧美一级淫片播放口| 麻豆影视在线观看_| 亚洲国产另类 国产精品国产免费| 日韩在线 中文字幕| 亚洲精品成人少妇| 国产综合精品在线| 成人黄色综合网站| 中文字幕有码av| 日韩视频在线一区二区三区| 亚洲欧洲精品一区二区三区波多野1战4| 蜜桃精品一区二区三区| 欧美专区日韩视频| 日本片在线观看| 在线观看日韩av| 天堂中文在线资源| 7799精品视频| 无码任你躁久久久久久久| 亚洲成在人线免费| 欧美风情第一页| 国产日韩欧美电影| av免费观看不卡| 精品一区二区三区av| 99精品视频播放| 亚洲国产三级| 日本高清视频免费在线观看| 日韩欧美视频在线播放| 欧美日韩一区在线观看视频| 亚洲欧洲国产精品一区| 91影院在线免费观看视频| 欧洲av一区二区| 2019中文字幕在线观看| 国产亚av手机在线观看| 久久这里有精品视频| 成年女人的天堂在线| 亚洲乱码一区二区| 人妻中文字幕一区| 精品国产一二三区| 亚洲精品久久久久久久久久 | 96成人在线视频| 欧美少妇激情| 国产精品视频一区二区高潮| 亚洲第一二三四区| 国产91精品久| 狼人综合视频| 久久免费视频这里只有精品| 欧美巨大xxxx做受沙滩| 欧美精品在线极品| 色婷婷视频在线观看| 欧美日本啪啪无遮挡网站| 国产在线高潮| 欧美成人黑人xx视频免费观看| 日本在线天堂| www日韩中文字幕在线看| 男人天堂久久久| 久久精品99久久久久久久久| 1024视频在线| 日韩专区在线播放| 国产乱色在线观看| 欧美成人激情视频| 欧美1—12sexvideos| 久久免费视频在线观看| 麻豆国产在线| 国产精品白嫩初高中害羞小美女| 欧美va视频| 91精品久久久久久久| 97色婷婷成人综合在线观看| 91色精品视频在线| 麻豆国产精品| 九九九九精品九九九九| 亚洲资源网你懂的| 手机看片福利永久国产日韩| 日韩专区精品| 久久精品无码中文字幕| 国产精品人人爽人人做我的可爱| 欧美爱爱视频免费看| 日韩国产精品大片| 日本高清久久久| 高清国产午夜精品久久久久久| 黄色激情在线观看| 国产嫩草影院久久久久| 欧美一区二区三区爽爽爽| 亚洲成av人片| 免费黄色片视频| 欧美久久高跟鞋激| 人妻91麻豆一区二区三区| 亚洲欧美精品一区二区| 黄网站在线播放| 午夜精品一区二区三区av| 范冰冰一级做a爰片久久毛片| 国产精品网址在线| 6080亚洲理论片在线观看| 免费看成人片| 欧美一区二区三区免费看| 香港三级韩国三级日本三级| 肉色丝袜一区二区| 九九九久久久久久久| 91亚洲精华国产精华精华液| 99自拍偷拍视频| 亚洲成人一区在线| 伊人久久亚洲综合| 亚洲精品白浆高清久久久久久| 成人在线免费公开观看视频| 欧美巨猛xxxx猛交黑人97人| 男人皇宫亚洲男人2020| julia一区二区中文久久94| 国产乱码精品一区二区三区四区 | 久久久久久一区二区| 欧美激情第四页| 国产亚洲美州欧州综合国| 欧美又粗又大又长| 欧美性极品少妇| 三级网站在线看| 久久成人精品视频| 偷拍中文亚洲欧美动漫| 国产69精品久久久久9999apgf | 精品国内亚洲在观看18黄| 看黄在线观看| 成人动漫在线视频| 欧美gvvideo网站| 日本精品免费在线观看| 国产成人自拍高清视频在线免费播放| 欧洲av一区二区三区| 午夜激情一区二区三区| www.国产黄色| 久久精品国产2020观看福利| 色婷婷综合久久久中字幕精品久久| 国产精品高清一区二区三区| 欧美电影免费| jizz欧美性11| 欧美高清在线一区| 国产精品高清无码| 亚洲精品一区二三区不卡| 爱福利在线视频| 91一区二区三区| 欧美一区二区| aaa一级黄色片| 国产精品久久久久影视| 国产一级片一区二区| 亚洲天堂第二页| 中文字幕在线直播| 鲁片一区二区三区| 亚洲青涩在线| 无码一区二区精品| 亚洲国产美女搞黄色| 囯产精品一品二区三区| 欧美精品videosex极品1| 免费观看亚洲视频大全| 欧美日韩一区二区三区电影| 国产综合久久久久影院| 国产日产精品一区二区三区的介绍| 精品视频免费看| 国产三区在线观看| **亚洲第一综合导航网站| 亚洲综合小说| 波多野结衣中文字幕在线播放| 一区二区三区四区高清精品免费观看 | jiyouzz国产精品久久| 日本午夜小视频| 亚洲精品黄网在线观看| 成人免费无遮挡| 日本高清久久一区二区三区| 日本sm残虐另类| 潘金莲一级黄色片| 精品国产免费一区二区三区香蕉| caoprom在线| 日本一区二区在线视频| 美女免费视频一区二区| 国产一区二区精彩视频| 欧美www视频| 中国色在线日|韩| 手机成人在线| 国产成人无遮挡在线视频| 久草精品视频在线观看| 国产视频久久久| 日日av拍夜夜添久久免费| 影音先锋亚洲视频| 国产传媒久久文化传媒| 色网站在线播放| 伊人伊成久久人综合网小说 | 奇米综合一区二区三区精品视频| 日本黄色录像视频| 亚洲成人av资源网| 视频二区不卡| 日本a级片在线观看| 波多野结衣中文一区| www.亚洲激情| 欧美日产国产成人免费图片| 五月天亚洲一区| 欧美性受xxxx黒人xyx性爽| 精品高清一区二区三区| 欧美激情免费| 久久久久资源| 精品一区二区久久久| 日韩免费在线视频观看| 中文字幕精品网| 成人在线视频你懂的| www.色就是色| 一区二区三区国产豹纹内裤在线| 少妇性bbb搡bbb爽爽爽欧美| 国产精品一区二区3区| 亚洲国产一区二区精品专区| 色噜噜噜噜噜噜| 亚洲国产精品va在线看黑人| 欧美系列精品| 337p粉嫩大胆噜噜噜鲁| 亚洲色图欧洲色图婷婷| 少妇性bbb搡bbb爽爽爽欧美| 亚洲aa中文字幕| 久久一综合视频| 久久婷婷综合国产| 日韩中文字幕在线| 九一亚洲精品| 男男做爰猛烈叫床爽爽小说|