Re: [问题] Parse,TryParse,与字串转换问题

楼主: s4300026 (s4300026)   2018-02-01 10:34:05
原文怒删~~
我来提供第四点一点想法
程式码:https://ideone.com/XnMPPo
举例:
我有一个相机,但是噪声很多,因此我使用了average的方法做平均
因此我要设定average的值
我要在GUI中text设定值,但是它是string类别,你知道的
因此我需要转换程某个特定类别
但是这个特定类别会可能不一样,举例来说,可以是int, double, float, short...
每次都要做转换,就要 Int32.Parse(), double.Parse()... 然后程式码重写一遍
这样不是很麻烦吗?
因此就写了一个转换器宣告如下:
Setter<想转换的型态>
(来源TextBox, 取得目标物被设定后的值, 给予目标物欲设定的值,
报错关键字, 设定后的状态)
好处是该setter可以用在很多地方,像是:
如果是FPS,就会像
Setter<double>(
sender as TextBox,
new DoublePtrVoid(camera.FPS),
new VoidPtrDouble(camera.FPS),
"Fps",
cameraControlGUI.LabelFpsShow);
如果是拍照后的存盘路径:
Setter<string>(
sender as TextBox, new
StringPtrVoid(camera.SavePicPath),
new VoidPtrString(camera.SavePicPath),
"SavePath",
cameraControlGUI.LabelSavePathShow);
如果是取像平均:
Setter<int>(
sender as TextBox,
new IntPtrVoid(camera.Average),
new VoidPtrInt(camera.Average),
"Average",
cameraControlGUI.LabelAvgShow);
那你会问:输入格式不符怎么办?
1. 如果是使用者白目,应该给数字的给文字,那就会被转换器挡下来,然后报错
2. 如果是硬件限制呢? 像是一秒要拍个1000000000000000张照片?
阿你可以写在camera.FPS()那个Get/Set方法里面挡住他,然后报错
这也是为什么我会除了有输入值的delegate方法,还要有输出值的delegate
因为你不会知道设定有没有成功啊!!!
3. 为什么要有text的 "\r\n" ,因为我把他设定成多行,但只有你按下 "换行"
,我的程式才会鸟你,不然一律视为你 "正在输入",尚未输入完成。
一点建议,仅供参考
话说上班回屁话,会不会被开除阿 (抖抖抖)
作者: commandoEX (卡曼都)   2018-02-01 19:34:00
现在讲泛型感觉太早了吧@ @
作者: aa12783509 (Ace)   2018-02-01 20:27:00
谢谢你~ 你前半段提的概念 我有点可以理解但是后面的程式码 或许就是要多看 多了解才会清楚了你讲的这个 比较像是在影像处理吧!? 之前我大学同学他有做这部分 那时候有听他大概讲 他们就适用C#做的!!
楼主: s4300026 (s4300026)   2018-02-02 07:59:00
因为原po在问有没有更通用的写法,那就只能走泛型了囧实际上这写法还牵扯到 不定型委派,和关注点分离。因为泛型的关系,使你的委派指标不能被定下来,这就要多找一个不定型委派的语法,至于为什么要用委派指标,则与关注点分离有关,因为关注点分离,这写法还可以用在其他地方,而不仅限于影像处理。
作者: aa12783509 (Ace)   2018-02-02 08:19:00
哈哈哈 了解了 谢谢你 看你提到的 都偏向影像 会问有没有比较常用的写法 是因为说 我的观念是建立在我自己查的资料 所以会有那种 东凑西凑的感觉 不确定正确性 或者是其实大家会其他类似更适合的写法 不过也是谢谢你哟 感谢

Links booklink

Contact Us: admin [ a t ] ucptt.com