PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
C_Sharp
[问题] 请问如何将类别作为引数传递?
楼主:
berice152233
(WASHI买的zenfone2)
2019-12-21 11:52:10
各位学长好
最近有个想法但做不出来
大概就像是这样:
https://dotnetfiddle.net/GUu7pe
Toyota Mazda Ford
这三个不同名称的类别中
都有一个名为Car的方法
在类别Test中
有一个SetPrice的方法
我想要将Toyota Mazda Ford这三个类别
作为引数引入SetPrice中
并且不希望动到方法SetPrice的内容
依照例子里面的写法
如果要将Toyota变更为Mazda
那么就得变更引数的型别
SetPrice(new Mazda());//这边可以变没关系
void SetPrice(Mazda Maker)//方法不希望变更
{
Maker.Car();
Console.WriteLine(Taiwan.Price);
}
有尝试自己上网找一些方法
但可能是不得要点,找出来大多不是我要的
请各位学长不吝赐教,感谢
作者:
testPtt
(测试)
2019-12-21 12:44:00
一个字都不变的话就是重写一个class如果你是要void SetPrice(T Maker):where T:xx{}那就这样里面还是要转型的动作Maker.Car()用delegate呢
作者:
samchung
(不是咖啡店小开XD)
2019-12-21 14:54:00
改成接口+多型的写法
https://dotnetfiddle.net/l9b2mG
但会改到 SetPrice 的参数型别,各车种也要继承此接口其实泛型的做法 1F 就有提过了,我只是顺便写出来 XD
作者:
jass970991
(半糖绿假面超人)
2019-12-22 15:54:00
看不是很懂 感觉你只是需要interface
作者:
ssccg
(23)
2019-12-25 09:55:00
因为new就不是一般OOP继承时的行为,是定义同名方法隐藏父类中的方法,virtual才是比较常见的OOP行为很多其他OOP语言里方法默认就是virtual,没有new这种功能
作者:
zenuo
(坚持到底永不放弃)
2019-12-26 15:39:00
用interface 在个别实作三个类别
继续阅读
[问题] 格式化文件
kisha024
[问题] 使用不同使用者帐户来执行程式
jayzhuang
[团报] 精准解析C#新语法
rexhuang
[问题] 模式设计
s4300026
[问题] winform如何利用com元件另做函式库
Orilla
[问题] DLL Debug?
abc95007
[问题] 网页专案执行无法产生文字档案/xml档案
jayzhuang
[问题] 请教 如何取得全部的backgroundworker
tmpss90187
[问题] DataGridView排序
nuvem
[问题] 如何强制测试
skitty
Links
booklink
Contact Us: admin [ a t ] ucptt.com